Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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 tkinter GUI应用程序变得无响应_Python_Tkinter_Python Multithreading - Fatal编程技术网

Python tkinter GUI应用程序变得无响应

Python tkinter GUI应用程序变得无响应,python,tkinter,python-multithreading,Python,Tkinter,Python Multithreading,我有一个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")

我有一个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()
从tkinter导入*
从tkinter.ttk导入*
从tkinter.ttk导入进度条
从tkinter导入ttk
将tkinter作为tk导入
导入tkinter.ttk,线程
tkk=Tk()
tkk.标题(“样本”)
tkk.几何体(“350x200”)
number=tk.StringVar()
选项=组合框(tkk,宽度=12,文本变量=number)
choice.grid(列=0,行=1)
类进度():
定义初始化(自身,父级):
self.progressbar=ttk.progressbar(tkk,方向=水平,模式=不确定)
self.t=threading.Thread()
self.t.uu init(target=self.progressbar.start,args=())
self.progressbar.grid(行=4,列span=6,粘滞=W+E,padx=(40,10))
self.t.start()
def端(自身):
self.progressbar.stop()
self.t.join()
def click():
action.configure(text=“selected case is:”+selected.get())
打印(“单击的按钮为:”)
id=0
当id<10时:
进展(tkk)
id+=1
其他:
新=进度(tkk)
新的(完)
action=ttk.按钮(tkk,text=“Click”,command=Click)
action.grid(列=1,行=1)
选中=ttk.Combobox(tkk,宽度=12,文本变量=数字)
所选['values']=('a'、'b'、'c'、'd')
已选定。网格(列=0,行=1)
已选定。当前()
tkk.mainloop()
输出如下:

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

一般来说,您似乎真的不知道自己在这里做什么。多次导入ttk和tkinter,在彼此的顶部创建组合框,然后创建一个while循环,该循环创建十个进度条,但不保存对其中任何一个的任何引用。我建议您在自己的测试应用程序中创建每个元素(组合框、按钮、进度条),并确保您理解它们,然后将它们放在一起。当它工作时,你可以开始学习线程。是 啊您使用保留字
id
作为变量名…
从tkinter导入ttk
tkk=Tk()。。。你是对的,令人惊讶的是它会冻结,它可能会爆炸!