为什么这不起作用。这是直接来自教科书的。我收到一个属性错误,指出 self._area 不存在。
from Tkinter import *
import math
class CircleArea(Frame):
def __init__(self):
"""Sets up a window and widgets."""
Frame.__init__(self)
self.master.title("Circle Area")
self.grid()
#Label and field for radius
self._radiusLabel = Label(self, text = "Radius")
self._radiusLabel.grid(row = 0, column = 0)
self._radiusVar = DoubleVar()
self._radiusEntry = Entry(self, textvariable = self._radiusVar)
self._radiusEntry.grid(row = 0, column = 1)
#Label and field for the area
self._areaLabel = Label(self, text = "Area")
self._areaLabel.grid(row = 1, column = 0)
self._areaVar = DoubleVar()
self._areaEntry = Entry(self, textvariable = self._areaVar)
self._areaEntry.grid(row = 1, column = 1)
# The command button
self._button = Button(self, text = "Compute", command = self._area)
self._button.grid(row = 2, column = 0, columnspan = 2)
def _area(self):
"""Event handler for button."""
radius = self._radiusVar.get()
area = radius ** 2 * math.pi
self._areaVar.set(area)
def main():
CircleArea(). mainloop()
run = CircleArea()
run.main()
是因为_area方法是在调用之后声明的吗?这没有道理为什么它不能使用向下编程技术工作。我对 GUI 真的很陌生,刚开始学习。第一章类(class)GUI。
编辑*:我希望弹出一个窗口,并有一个用于输入圆半径的输入字段。带有标签半径。以及基于半径的圆面积结果的输出输入字段。底部有一个计算按钮,用于计算它。
我只是想习惯输入不同的命令等等。我什至还没有参加过这个讲座。我只是在看看这段代码会做什么以及它会是什么样子。如果这样能让你感觉好些,我会全部手写出来。:P 而不是复制和粘贴。
最佳答案
问题是你的缩进是错误的。 _area
和 main
是在 __init__
中定义的,这是您不想要的。正确的缩进如下(您不需要 main
函数)。
from Tkinter import *
import math
class CircleArea(Frame):
def __init__(self):
"""Sets up a window and widgets."""
Frame.__init__(self)
self.master.title("Circle Area")
self.grid()
#Label and field for radius
self._radiusLabel = Label(self, text = "Radius")
self._radiusLabel.grid(row = 0, column = 0)
self._radiusVar = DoubleVar()
self._radiusEntry = Entry(self, textvariable = self._radiusVar)
self._radiusEntry.grid(row = 0, column = 1)
#Label and field for the area
self._areaLabel = Label(self, text = "Area")
self._areaLabel.grid(row = 1, column = 0)
self._areaVar = DoubleVar()
self._areaEntry = Entry(self, textvariable = self._areaVar)
self._areaEntry.grid(row = 1, column = 1)
# The command button
self._button = Button(self, text = "Compute", command = self._area)
self._button.grid(row = 2, column = 0, columnspan = 2)
def _area(self):
"""Event handler for button."""
radius = self._radiusVar.get()
area = radius ** 2 * math.pi
self._areaVar.set(area)
run = CircleArea()
run.mainloop()
关于python - 为什么我从 GUI Python 教科书中获取的这段代码有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20039354/