首页 > 解决方案 > Python tkinter GUI 应用程序变得无响应

问题描述

我有一个 tkinter python 应用程序,如下所示:

    from tkinter import *
    from tkinter.ttk import *
    from tkinter.ttk import Progressbar
    from tkinter import ttk
    import tkinter as tk
    import tkinter.ttk, threading
    tkk = Tk()
    tkk.title("sample")
    tkk.geometry('350x200')
    number= tk.StringVar()  
    choice= Combobox(tkk, width=12, textvariable=number)  
    choice.grid(column=0,row=1) 
    class progress():
        def __init__(self, parent):
                self.progressbar = ttk.Progressbar(tkk, orient = HORIZONTAL, mode = 'indeterminate')
                self.t = threading.Thread()
                self.t.__init__(target = self.progressbar.start, args = ())
                self.progressbar.grid(row=4,columnspan=6,sticky=W+E,padx=(40,10))
                self.t.start()

        def end(self):

                self.progressbar.stop()
                self.t.join()
    def click(): 
        action.configure(text="chosen case is : "+ selected.get()) 
        print("clicked button is :")

        id = 0
        while id < 10:
            progress(tkk)
            id+=1
        else:
            new=progress(tkk)
            new.end()        

    action = ttk.Button(tkk, text="Click", command=click)
    action.grid(column=1,row=1)

    selected= ttk.Combobox(tkk, width=12, textvariable=number)  
    selected['values']=('a','b','c','d')
    selected.grid(column=0,row=1)  
    selected.current() 
    tkk.mainloop()

输出如下:

现在,当我从下拉列表中选择一个元素并单击单击按钮时,如果 id < 10 否则进度条停止,我应该启动进度条。因此,当进度条停止时,输出窗口变得无响应并崩溃。我正在一个线程中开始进度。不明白为什么当进度条停止时它变得无响应。

标签: pythontkinterpython-multithreading

解决方案


推荐阅读