Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用多进程更新无限循环中的全局变量_Python_Textbox_Global_Multiprocess - Fatal编程技术网

Python 如何使用多进程更新无限循环中的全局变量

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

我有以下简单的代码。有一个按钮和输入小部件

当我点击按钮时,changeText读取条目\小部件值并分配给'var'。主窗口和InfiniteLoop同时运行。但在无穷远处,变量var的值不变。如何改变它的价值

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)