【问题标题】:Threading Tkinter with progress bar使用进度条线程化 Tkinter
【发布时间】:2015-08-31 12:45:32
【问题描述】:

我正在尝试制作一个将视频上传到服务器的线程 Tkinter 应用程序,问题是当我制作线程应用程序时,它以无限循环结束。代码如下:

class ThreadedTask(threading.Thread):
print "threaded task start"
    def __init__(self, queue):
        threading.Thread.__init__(self)
        self.queue = queue
    def start_upload(self):
        PATH = os.path.abspath(os.path.join(os.path.dirname(__file__),     "upload_video_to_server.py"))
        if os.path.isfile(PATH) and os.access(PATH, os.R_OK):
           print filename
           upload_video_to_server.make_Info(filename=filename,     title=video_title, description=video_desc, tags=video_keywords)
           upload_video_to_server.upload_Start(filename=filename)
           print "ok"
        else:
            tkMessageBox.showerror(
                "Error!",
                "Unable to find upload script!"
            )
            return

def tb_click():
    print "tbclick start"
    progress()
    prog_bar.start()
    global queue
    queue = Queue.Queue()
    ThreadedTask(queue).start()
    app.after(100, process_queue)

def process_queue():
        try:
            print "try pass"
            msg = queue.get(0)
            print "MSG: ", msg
            prog_bar.stop()
        except Queue.Empty:
            print "Queue is empty!"
            app.after(100, process_queue)

def progress():
    global prog_bar
    print "prog bar is being made"
    prog_bar = ttk.Progressbar(
            app, orient="horizontal",
            length=200, mode="indeterminate"
            )
    prog_bar.pack(side=TOP)

button1 = Button(app, text="START", width=20, command=tb_click)
button1.place(x=355, y=420)
app.mainloop()

运行此代码后,我立即打印出“线程任务启动”,单击“开始”按钮后,我进入无限循环打印“尝试通过”和“队列为空”......什么都没有(对最终用户)当我点击开始按钮时发生(视频上传脚本没有从这个代码运行)

这段代码有什么问题?有什么我错过的吗?

【问题讨论】:

    标签: python multithreading python-2.7 tkinter queue


    【解决方案1】:

    看起来start_upload 从未被执行。尝试将其重命名为run。然后在调用start()时执行。

    您可能仍会收到“队列为空”消息,因为您似乎从未向队列中添加任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多