考虑为 GUI 的主要区域创建单独的类。
假设您有一个标签、条目和按钮小部件,它们的作用类似于文件选择小部件,当您单击按钮时,它会打开一个对话框以选择文件,然后选择的文件路径会显示在条目字段中.
所有这些代码可以一起存在,它定义了小部件所有元素的行为和外观。
这可以作为一个独立的小部件实现,如下所示。
from tkinter import *
from tkinter import filedialog
class FileSelect(Frame):
def __init__(self,master,label="",**kw):
Frame.__init__(self,master)
self.configure(**kw)
self.file = StringVar()
self.Label = Label(self, text=label)
self.Label.config(width=10,anchor=E)
self.filenamebox = Entry(self,text=self.file)
self.filenamebox.config(width=50)
self.btnBrowse = Button(self,text='Browse',command=self.browse_file)
self.btnBrowse.config(width=10)
self.Label.grid(row=0,column=0,pady=5,sticky=E)
self.filenamebox.grid(row=0,column=1,pady=5)
self.btnBrowse.grid(row=0,column=2,pady=5,padx=5)
def browse_file(self):
filename = filedialog.askopenfilename(filetypes=[('All File','*.*')])
self.file.set(filename)
def get_filename(self):
return self.file.get()
def main():
root = Tk()
root.title("Example Widget")
FileSelect(root,label="My File").grid()
root.mainloop()
if __name__ == '__main__':
main()
我们还可以将此功能包含在更大的 GUI 代码部分中。
from otherFile import FileSelect
....
fileSelect = FileSelect(root,label="Select New File")
fileSelect.grid()
(otherFile 是包含 FileSelect 小部件的 python 文件的名称)
使用这种方法,您可以在单独的代码文件中为您的 GUI 创建更小的代码部分,并将它们构建成一个更复杂的示例。
如果您有执行“非 gui”功能的代码部分,例如读取文件,请将它们放入单独的函数或类中,您可以将它们导入到您的主代码中。