我遇到一个问题,在我的开发过程中让我失望很多.. 实际上,我无法使用python的Threading模块更新Queue! 我搜索了几个站点,我找不到可能阻止我的变量更新的错误。
我的tkinter按钮应该允许我运行另一个python脚本。为此,我使用线程,这样我就可以使用GUI而不会中断它。
我解释了我的问题:
我的tkinter按钮应该允许我运行另一个python脚本。为此,我使用线程,因此我可以使用GUI而不会被中断。另一个按钮应该允许我更新队列,这就是动作不能做的事情。
我使用Tkinter的主要脚本:
import Tkinter, cv2
from Tkinter import *
from threading import Thread
import threading, Queue
import pyautogui, os, time, urllib2, urlparse
import cv2
from yes2 import *
def print1():
global kill, q
kill = []
q = Queue.Queue()
q.put("True")
thread = Thread(target = main, args=(kill, q))
thread.start()
def stop():
global q
q.put("False")
print q.get()
root = Tkinter.Tk()
root.title('breakable')
bouton= Button(root, text="Run", command=print1)
bouton.grid(row=3, column=0)
bouton= Button(root, text="stop", command=stop)
bouton.grid(row=3, column=1)
root.mainloop()
我想打开另一个脚本:
def main(kill, q):
while True:
try:
get = q.get(timeout=2)
print get
except Empty as error:
print("Error too many times")
出现的值是" True",但是当我点击我的停止按钮时,它应该更新我的队列" False",它什么都不做
提前致谢:)
答案 0 :(得分:1)
它确实更新了您的队列,但在下一行,您get
再次输出值。从“停止”功能中删除print q.get()
。