Python中init方法的条目数有限制吗?我正在用Tkinter构建一个简单的UI,当被其他方法引用时,编译器会忽略正确编写的标签。你知道吗
代码:
from tkinter import *
from tkinter import ttk
class UI:
def __init__(self, root):
self.entryString = StringVar()
self.entryString.set("50000000") #Default value
self.trialField = Entry(root, textvariable = self.entryString).grid(row = 0, column = 0, columnspan = 2)
self.trialSend = Button(root, text = "Send value", command = self.setter()).grid(row = 1, column = 0)
#self.defaultTrials = Button(root, text = "Default", command = self.resetTrials).grid(row = 1, column = 1)
self.staticLabel = Label(root, text = "This gets sent to program when program is run:").grid(row = 2, column = 0, columnspan = 3)
self.trialOut = Label(root, text = self.entryString.get())
self.trialOut.grid(row = 3, column = 0, columnspan = 2)
def setter(self):
self.trialOut.config(text = self.entryString.get())
但是,我得到了一个错误:“AttributeError:'UI'对象没有属性'trialOut'”
有一些场合,我可以移动trialOut部分的顶部,它的工作刚刚好。我还在学习使用Python和Tkinter,所以我很容易忽略了一些东西。非常感谢您的帮助。你知道吗
问题在于:
请注意,您正在调用引用
self.trialOut
的^{self.setter
,但是self.trialOut
直到几行之后才被定义。你知道吗你可能想要:
(注意
self.setter
后面缺少的括号)延迟调用函数直到用户单击按钮。你知道吗在其他新闻中,你有几句话,比如:
在这种情况下,
self.someWidgetName
将始终具有None
的值,因为这是Widget.grid
的返回值。这可能会导致人们(你!)阅读您的代码,因为所有这些类成员看起来都应该持有小部件实例,而实际上它们并不持有。一个更好的做法是执行您使用self.trialOut
所做的操作在单独的行上使用几何体管理器:相关问题 更多 >
编程相关推荐