<p>您无法从一个文件访问另一个文件中的全局文件。这不是个好主意。您应该以<em>显式</em>的方式使用变量-如果您要使用<code>list</code>、<code>dict</code>或<code>tk.IntVar</code>、<code>tk.StringVar</code>来保留值,那么您可以将其作为参数发送,函数可以更改<code>list</code>、<code>dict</code>或<code>tk.IntVar</code>、<code>tk.StringVar</code>中的值,并且可以在其他函数中更改该值</p>
<p><code>tk.IntVar</code>也很有用,因为您可以将其分配给label,当您更改<code>IntVar</code>时,它会自动更新<code>Label</code>中的值</p>
<p>您只需记住<code>IntVar</code>需要<code>.get()</code>和<code>.set()</code>才能使用值</p>
<p><strong>main.py</strong></p>
<pre><code>myglobal = tk.IntVar(value=0) # you have to create after `root`
Button(..., command=lambda:second_window.change_value(myglobal)
</code></pre>
<p><strong>第二个窗口.py</strong></p>
<pre><code>def change_value(variable):
Button(..., command=lambda:change_my_num(variable))
def change_my_num(variable):
variable.set( variable.get()+1 )
print(variable.get())
</code></pre>
<p>现在您可以将其分配到<code>Label</code>以显示当前值</p>
<pre><code>Label(..., textvariable=myglobal)
</code></pre>
<hr/>
<p>完整代码:</p>
<p><strong>main.py</strong></p>
<pre><code>import tkinter as tk
#from tkinter import * # PEP8: `import *` is not prefered
import second_window
#
root = tk.Tk() # create a main window
root.geometry("750x250")
myglobal = tk.IntVar(value=0) # you have to create after `root`
btn1 = tk.Frame(root)
btn1.grid(column=0, row=0)
# PEP8: `lower_case_names` for variables
analyze = tk.Button(btn1, text="Analyze", command=lambda:second_window.change_value(myglobal))
analyze.grid(row=0, column=0)
l = tk.Label(btn1, textvariable=myglobal)
l.grid(row=1, column=0)
print(myglobal.get()) # it runs it before `mainloop` starts GUI and shows window - so it is useless.
root.mainloop()
print(myglobal.get()) # it runs it after closing window
</code></pre>
<p><strong>第二个窗口.py</strong></p>
<pre><code>import tkinter as tk # PEP8: `import *` is not preferred
def change_my_num(variable): # PEP8: `lower_case_names` for functions
variable.set( variable.get()+1 )
print(variable.get())
def change_value(variable):
second_window = tk.Toplevel() # use `Toplevel to create a 2nd window
b = tk.Button(second_window, text="Press to Change Global", command=lambda:change_my_num(variable))
b.grid(row=0, column=0)
</code></pre>
<hr/>
<p><a href="https://www.python.org/dev/peps/pep-0008/" rel="nofollow noreferrer">PEP 8 Style Guide for Python Code</a></p>
<hr/>
<p><a href="https://www.python.org/dev/peps/pep-0020/" rel="nofollow noreferrer">PEP 20 Python Zen</a></p>
<pre><code>... Explicit is better than implicit. ...
</code></pre>