import tkinter as tk
import importlib as imp # to reload some_module after it has been imported
def show_var():
global label
global some_module
try:
imp.reload(some_module) # to reload some_module if it has already been imported
except:
import some_module # to import some_module if it has never been imported
label['text'] = some_module.variable
label.after(500, show_var) # to recursively call itself every 500 miliseconds
if __name__ == '__main__':
root = tk.Tk()
label = tk.Label(root)
show_var()
label.pack()
root.mainloop()
根据你提供的文件
str_mod
被修改的假设是错误的。你知道吗全局变量并不像这个问题所暗示的那样全局。它们不是共享的,或者可以在多个python脚本之间无缝地访问。你知道吗
如果一个脚本有一个全局变量,这意味着该变量可以在该脚本中的任何地方访问,并且该脚本本身,除非该脚本被另一个脚本
import
访问。即使在使用所需的'global'变量的脚本被import
编辑之后,对该变量所做的更改现在也用于导入脚本,并且仅用于导入脚本。你知道吗如果一个文件中的数据需要由多个python脚本访问,那么它必须由每个想要访问它的脚本读取。你知道吗
如果脚本需要文件中的数据,则脚本必须读取或
reload
(如果是第一次,则为import
),每次脚本都要将其值更新为最新值。你知道吗如果一个脚本需要更改文件中的数据以供另一个脚本访问,那么它必须覆盖该文件中的数据,或者可以将数据放在其他地方,以便另一个脚本可以从第一个脚本编写数据的位置访问该数据。你知道吗
在下面的示例中,假设其他脚本或其他人通过不时覆盖
variable
来编辑some_module
。你知道吗可以使用
reload
函数将variable
中定义的some_module
更新为其最新值。下面的示例使用after
每隔半秒更新label
的文本:和
some_module.py
:使用类变量(
BooleanVar
、DoubleVar
、IntVar
、StringVar
)可能很麻烦,因为它们需要tk.Tk()
的实例才能存在。你知道吗相关问题 更多 >
编程相关推荐