python 从 tkinter 小部件设置全局变量
python set global variable from tkinter widget
我正在玩 tkinter 和多处理包和全局变量。按下按钮时无法设置变量。当它被释放时,它的值不会保留并恢复到它以前的状态。非常感谢您的帮助。这是MVP。
from multiprocessing import Process
from tkinter import *
import time
root = Tk()
var_a = 10
def set_callback():
global var_a
var_a = int(e1.get())
print(var_a)
def pro_function():
while True:
print(var_a)
time.sleep(0.1)
e1 = Entry(root)
e1.pack(pady=12)
button1 = Button(root, text="Set Var", command = set_callback )
button1.pack(pady=12)
if __name__ == '__main__':
root.geometry('350x218')
root.title("PythonLobby")
x = Process(target=pro_function)
x.start()
root.mainloop()
x.join()
您已经创建了一个全新的 PROCESS 来进行监控。该进程有自己的内存 space,与 GUI 运行 完全分开。如果您使用一个简单的线程来进行监控,您会发现它工作得很好。只需更换
x = Process(target=pro_function)
和
x = threading.Thread(target=pro_function)
您会看到该值按预期更新。
我正在玩 tkinter 和多处理包和全局变量。按下按钮时无法设置变量。当它被释放时,它的值不会保留并恢复到它以前的状态。非常感谢您的帮助。这是MVP。
from multiprocessing import Process
from tkinter import *
import time
root = Tk()
var_a = 10
def set_callback():
global var_a
var_a = int(e1.get())
print(var_a)
def pro_function():
while True:
print(var_a)
time.sleep(0.1)
e1 = Entry(root)
e1.pack(pady=12)
button1 = Button(root, text="Set Var", command = set_callback )
button1.pack(pady=12)
if __name__ == '__main__':
root.geometry('350x218')
root.title("PythonLobby")
x = Process(target=pro_function)
x.start()
root.mainloop()
x.join()
您已经创建了一个全新的 PROCESS 来进行监控。该进程有自己的内存 space,与 GUI 运行 完全分开。如果您使用一个简单的线程来进行监控,您会发现它工作得很好。只需更换
x = Process(target=pro_function)
和
x = threading.Thread(target=pro_function)
您会看到该值按预期更新。