<p>首先,您可以在主窗口中使用类,而不是使用全局变量,您可以使用类变量。第二,我建议您使用tkinter变量来存储来自widget的重要数据,因为路径和状态。例如,如果使用<code>text=tk.StringVar()</code>,则可以使用<code>text.set('value')</code>或<code>text.get()</code>从文本中设置或获取值。Tkinter变量是对象,如果您在main中定义了一个对象,则可以在函数中作为全局变量访问它,而无需使用<code>global</code>。但是,在您的代码中,要将<code>text</code>用作<code>StringVar</code>,您应该将<code>Text</code>小部件更改为<code>Entry</code>小部件,这更合适,因为path是单个条目值而不是文本。同样,您可以将<code>start_stop</code>按钮更改为<code>Checkutton</code>,这将使颜色更改变得不必要,因为您可以为<code>background</code>和<code>selectcolor</code>定义颜色</p>
<p>下面的代码包括我在此建议的所有更改:</p>
<p>将tkinter作为tk导入
从tkinter导入文件对话框,文本
导入操作系统</p>
<pre><code>class Main(tk.Tk):
def __init__(self):
super(Main, self).__init__()
self.title('APP')
self.config(bg='snow3')
self.minsize(700, 700)
self.status = tk.IntVar()
self.text = tk.StringVar(self, value='Enter Path to Storage HERE')
browse_button = tk.Button(self, text='Browse', width='10',
command=self.browse)
browse_button.place(x=605, y=10)
tk.Entry(self, width=73, textvariable=self.text).place(x=10, y=13)
self.start_stop = tk.Checkbutton(self, height=1, width=12, text="start",
font=('Helvetica', '40'), indicator=False,
bg='light green', selectcolor='red',
variable=self.status, command=self.start_scanning)
self.start_stop.pack(pady=50)
def browse(self):
path = filedialog.askdirectory(initialdir='/', title='Select where you want to save your file')
self.text.set(path)
def start_scanning(self):
if self.status.get():
self.start_stop.config(text='stop')
else:
self.start_stop.config(text='start')
if __name__ == '__main__':
Main().mainloop()
</code></pre>