python - 有没有合适的方法来改变 kivy 画布中的单个像素颜色?
问题描述
我试图制作存储矩形(大小=(1,1))和颜色对象的二维数组,所以它像kivy画布上的新画布一样工作,但是当它第一次创建矩形数组时它是滞后的,即使当我只放了 100x100 像素,这是代码:
import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.window import Window
from kivy.graphics import Color, Line, Point, Rectangle
from kivy.clock import Clock
class Touch(Widget):
def __init__(self, **kwargs):
super(Touch, self).__init__(**kwargs)
self.new_window_size= None
self.timer= 0
Clock.schedule_interval(self.update_screen, 1/30)
def update_screen(self, *args):
with self.canvas:
self.old_window_size= self.new_window_size
self.new_window_size= Window.size
if(self.old_window_size!= self.new_window_size):
#i set 100x100 just to test
self.w= 100 #self.new_window_size[0]
self.h= 100 #self.new_window_size[1]
self.color= []
self.pixel= []
for x in range(self.w):
temp_1= []
temp_2= []
for y in range(self.h):
print(x, y)
temp_1.append(Color(1, 1, 1, 1))
temp_2.append(Rectangle(pos= (x, y), size= (1, 1)))
self.color.append(temp_1)
self.pixel.append(temp_2)
else:
#update color
self.color[self.timer][24].rgba= (0, 0, 0, 1)
print(self.timer)
self.timer+= 1
class MyApp(App):
def build(self):
return Touch()
MyApp().run()
有没有合适的方法来改变 kivy 画布类中的单个像素?
解决方案
要仅更改一个像素,您可以使用 a Rectangle
with size (1,1)
。最容易使用kv
:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
class Touch(Widget):
pass
kv = '''
<Touch>:
canvas:
Color:
rgba: 1,0,0,1 # the new pixel color
Rectangle:
pos: 200, 200 # The pixel that you want to set
size: 1,1 # indicate that just one pixel is changed
'''
class MyApp(App):
def build(self):
Builder.load_string(kv)
return Touch()
MyApp().run()
推荐阅读
- android - 如果我想在用户登录后检索用户的数据,是否需要使用共享首选项?
- java - Spring Boot Gradle 从构建的 jar 中创建一个 tar 文件,不包括资源
- javascript - translateX 和 translate3d(x,0,0) 之间更快
- javascript - 利用 。在 JSON 键中,而不是作为属性
- java - 在 JBOSS EAP7 中遇到 _jspService 超出 65535 字节限制问题
- java - 为什么我的比较子句总是抛出 IllegalArgumentException?
- python - 如何在 Python 中的捕获视频上插入图像
- javascript - 将方法移出类
- docker - Kubernetes 相当于 'docker run -it'
- python - 跨模块的 ContextVars