Python 如何使用多进程更新无限循环中的全局变量
我有以下简单的代码。有一个按钮和输入小部件 当我点击按钮时,changeText读取条目\小部件值并分配给'var'。主窗口和InfiniteLoop同时运行。但在无穷远处,变量var的值不变。如何改变它的价值Python 如何使用多进程更新无限循环中的全局变量,python,textbox,global,multiprocess,Python,Textbox,Global,Multiprocess,我有以下简单的代码。有一个按钮和输入小部件 当我点击按钮时,changeText读取条目\小部件值并分配给'var'。主窗口和InfiniteLoop同时运行。但在无穷远处,变量var的值不变。如何改变它的价值 import tkinter as Tk from multiprocessing import Manager, Process import time var = 'Unchanged' root = Tk.Tk() root.geometry('740x306') root.ti
import tkinter as Tk
from multiprocessing import Manager, Process
import time
var = 'Unchanged'
root = Tk.Tk()
root.geometry('740x306')
root.title("Performance")
id_label = Tk.Label(master=root, text="Id: ")
id_label.pack()
entry_widget = Tk.Entry(master=root, font=30)
entry_widget.pack()
def changeText():
global var
var = entry_widget.get() #var is changed here. example var's value is: a
print_var() # var = a and printing a.
def print_var():
print(var) # var's value is a and its working here.
def aaa():
id_label.config(font=30)
id_label.place(x=10, y=5)
entry_widget.place(x=33, y=5)
sumbit_button = Tk.Button(master=root, text='Sumbit', command=changeText)
sumbit_button.pack()
sumbit_button.place(x=250, y=2)
Tk.mainloop()
def forLoop():
while True:
time.sleep(0.1)
print_var() #doesn't work here. print Unchanged
if __name__ == '__main__':
p1 = Process(target=aaa)
p1.start()
p2 = Process(target=forLoop)
p2.start()
p1.join()
p2.join()
您需要调用changeText方法来更新值。如果你想在InfiniteLoop中实现这一点
#Button's command
def changeText():
global var
var = entry_widget.get()
return var
请提供更多信息,而不是不工作。。。我已经调试了你代码的简化版本。请参阅;var=“UnChanged”def changeText():var=“Changed…”返回var def infinitelop():而True:text=changeText()打印(text)infinitelop()我更新了代码。请控制它。只有for循环不起作用。因为一切都是好的。
def InfiniteLoop():
var = changeText()
while True:
print(var)