拥有" root"是否是一个好的结构?或者" app"和一个带有Frame而不是单独的类的mainloop然后如果" if __name .."打电话?
示例:
class App:
def __init__(self):
self.root = Tkinter.Tk()
self.root.title("Color Send to Arduino")
答案 0 :(得分:1)
将您的应用代码放在继承自Frame
的类中的一个很好的理由是它使您的代码更具可重用性。您可以将其插入任何Tkinter GUI根目录,而不会有太多麻烦。
例如在app.py
中import Tkinter as tk
class App(tk.Frame):
def __init__(self,parent):
tk.Frame.__init__(parent)
self.parent = parent
def initialise(self):
pass
和other_app.py
from app import App
import Tkinter as tk
if __name__ == "__main__":
root = tk.Tk()
myapp = App(root)
myapp.pack()
root.mainloop()
编辑:为了配合下面的评论,一个实际的(虽然非常简单)可重复使用的应用程序将是一个时钟。
import Tkinter as tk
import getpass
import time
class WelcomeClock(tk.Frame):
def __init__(self,parent):
tk.Frame.__init__(self,parent)
self.parent = parent
self.timevar = tk.StringVar()
self.__set_time()
self.initialize()
def initialize(self):
message = "Welcome %s!\nThe time is currently"%(getpass.getuser().capitalize())
self.welcome = tk.Label(self,text=message)
self.welcome.pack(anchor=tk.N)
self.clock = tk.Label(self,textvar=self.timevar)
self.clock.pack()
def __set_time(self):
self.timevar.set(time.strftime("%Y-%m-%d %H:%M:%S"))
self.after(499,self.__set_time)
if __name__ == "__main__":
root = tk.Tk()
clock = WelcomeClock(root)
clock.pack()
root.mainloop()
由于WelcomeClock
类继承自tk.Frame
,我可以轻松导入它并将其打包到我使用的任何其他Tkinter GUI中。
答案 1 :(得分:0)
使用class
时,可以使用create class对象多次使用方法。
import Tkinter
class simpleapp_tk(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self,parent)
self.parent = parent
self.initialize()
def initialize(self):
pass
if __name__ == "__main__":
app = simpleapp_tk(None)
app.title('my application')
app.mainloop()