Wil*_*son 3 python user-interface
为什么这不起作用.这直接来自教科书.我收到一个属性错误,说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的新手.关于类的GUI的第一章.
编辑*:我希望弹出一个窗口并有一个输入字段用于输入圆的半径.带有Radius标签.以及基于半径的圆形区域结果的输出输入字段.以及计算它的底部的计算按钮.
而我只是想习惯输入不同的命令等.我还没有参加过这个讲座.我只是看到这段代码会做什么以及它会是什么样子.如果这让你感觉更好,我会手工输入它.: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()