【发布时间】:2021-03-26 23:32:31
【问题描述】:
我对 Python 完全陌生,一直在学习教程脚本并对其进行修改,以了解我能做什么,但我遇到了一些麻烦。变量红色和绿色出现未定义,我不确定它们为什么会这样?也不知道这是否是通过按键更改颜色的最佳方法,因此非常感谢任何帮助和改进。
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color, Ellipse
import keyboard
class MyPaintWidget(Widget):
if keyboard.is_pressed('r'):
red = True
green = False
elif keyboard.is_pressed('g'):
green = True
red = False
def on_touch_down(self, touch):
with self.canvas:
if red == True:
Color(1, 0, 0)
elif green == True:
Color(0,1,0)
d = 30.
Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d))
class MyPaintApp(App):
def build(self):
return MyPaintWidget()
if __name__ == '__main__':
MyPaintApp().run()
【问题讨论】:
-
它们在哪种情况下“出现未定义”? “但他们应该是?”你为什么这么相信?你写的地方,例如
if keyboard.is_pressed('r'),什么时候你希望代码检查'r'键是否被按下? -
“不知道这是否是通过按键更改颜色的最佳方法” 这对您想要发生的事情的解释不够清楚。你必须仔细考虑逻辑。当您按下该键时究竟应该发生什么 - 这是否会改变先前绘制的椭圆的颜色,或者将来将要绘制的椭圆的颜色,或者只是什么?
-
这些变量是在类级别定义的——它们在实例方法中作为局部变量不可见。要从实例方法访问它们,请将
ClassName.放在变量前面,即MyPaintWidget.red或MyPaintWidget.green。 -
如果您是“完全不熟悉 Python”,那么您不应该尝试制作图形程序。这引入了很多您现在不需要的复杂性和混乱。您应该首先学习一些基础知识。首先寻找一个通用的 Python 教程。你现在找到的东西,可能假设你已经达到了可以自己回答这个问题的水平,或者更好的是一开始就没有遇到问题。
-
如果一切都失败了,official documentation 包含一个教程。
标签: python variables undefined