这是不好的做法和/或是否有更好的方法来访问函数变量而不是:
class Start_up:
def __init__( self ):
self.root = Tk()
self.user_entry = StringVar()
self.change = StringVar()
self.label = Label ( self.root, textvariable = self.change )
self.entry = Entry ( self.root, textvaribale = self.user_entry )
self.button = Button ( self.root, text="Buttton", command = self.doSomething )
def doSomething( self ):
self.change.set("Text Changed")
got_it = self.user_entry.get()
我想知道这些功能是否有办法完全相同但没有上课?
提前感谢您的任何帮助,我已经环顾四周,但无法找到TKinter的这个例子。
答案 0 :(得分:1)
不,没有更好的方法。在存储和访问变量时,您在示例中显示的是正确的方法。
当然,你可以在没有课程的情况下完成。那么您的实例变量必须是全局变量。通常,应尽可能避免全局变量。通过使用类,您的数据可以很好地封装在使用数据的代码中。
至于你的示例的其余部分,我建议不在app类中创建根窗口,尽管在某种程度上是个人偏好。我个人对程序结构的建议如下:https://stackoverflow.com/a/17470842/7432
答案 1 :(得分:0)
基本想法没问题,但你应该把根移到课外。
class App:
def __init__(self, master):
self.user_entry = StringVar()
self.change = StringVar()
self.label = Label(master, textvariable=self.change)
self.entry = Entry(master, textvaribale=self.user_entry)
self.button = Button(master, text="Buttton", command=self.doSomething
def doSomething(self):
self.change.set("Text Changed")
got_it = self.user_entry.get()
root = Tk()
app = App(root)
root.mainloop()
更详细地描述了here
你还应该阅读the official python style guide(正如@jonrsharpe所说),尤其是关于间距的部分。我在上面的示例中更正了您的间距。