python运行tkinter界面时多线程启动一个input代码后当无输入 时无法通过代码关闭窗口
环境:python3本来是希望解决另外一个问题,但是出现了新的问题,下面的代码不需要别的依赖库,复制就可以运行。当把第7行print(msg)注释掉的时候,运行程序后按界...
环境:python3
本来是希望解决另外一个问题,但是出现了新的问题,下面的代码不需要别的依赖库,复制就可以运行。
当把第7行print(msg)注释掉的时候,运行程序后按界面上的那个按钮,窗口顺利中止,msg也能print出来。但是把注释去掉之后,再次点击按钮,程序就卡死了。这是怎么回事呢?改了一个print影响了程序流程吗,会导致卡死呢?请教一下,非常感谢。
上代码:
is_error = True
import tkinter
from threading import Thread
def f1(top, msg):
#print(msg)
top.destroy()
def f2(top):
if is_error:
s = input('\ninput:')
print('output:', s)
else:
s = 'No error'
s2 = tkinter.Label(top, text=s)
s2.pack()
top = tkinter.Tk()
b1 = tkinter.Button(top, text='Test', command=lambda:f1(top,123))
b1.pack()
t = Thread(target=f2, args=(top,))
t.start()
top.mainloop()
百度啊,把缩进全都搞没了。
重发一次:
is_error = True
import tkinter
from threading import Thread
def f1(top, msg):
~~~~#print(msg)
~~~~top.destroy()
def f2(top):
~~~~if is_error:
~~~~~~~~s = input('\ninput:')
~~~~~~~~print('output:', s)
~~~~else:
~~~~~~~~s = 'No error'
~~~~s2 = tkinter.Label(top, text=s)
~~~~s2.pack()
top = tkinter.Tk()
b1 = tkinter.Button(top, text='Test', command=lambda:f1(top,123))
b1.pack()
t = Thread(target=f2, args=(top,))
t.start()
top.mainloop() 展开
本来是希望解决另外一个问题,但是出现了新的问题,下面的代码不需要别的依赖库,复制就可以运行。
当把第7行print(msg)注释掉的时候,运行程序后按界面上的那个按钮,窗口顺利中止,msg也能print出来。但是把注释去掉之后,再次点击按钮,程序就卡死了。这是怎么回事呢?改了一个print影响了程序流程吗,会导致卡死呢?请教一下,非常感谢。
上代码:
is_error = True
import tkinter
from threading import Thread
def f1(top, msg):
#print(msg)
top.destroy()
def f2(top):
if is_error:
s = input('\ninput:')
print('output:', s)
else:
s = 'No error'
s2 = tkinter.Label(top, text=s)
s2.pack()
top = tkinter.Tk()
b1 = tkinter.Button(top, text='Test', command=lambda:f1(top,123))
b1.pack()
t = Thread(target=f2, args=(top,))
t.start()
top.mainloop()
百度啊,把缩进全都搞没了。
重发一次:
is_error = True
import tkinter
from threading import Thread
def f1(top, msg):
~~~~#print(msg)
~~~~top.destroy()
def f2(top):
~~~~if is_error:
~~~~~~~~s = input('\ninput:')
~~~~~~~~print('output:', s)
~~~~else:
~~~~~~~~s = 'No error'
~~~~s2 = tkinter.Label(top, text=s)
~~~~s2.pack()
top = tkinter.Tk()
b1 = tkinter.Button(top, text='Test', command=lambda:f1(top,123))
b1.pack()
t = Thread(target=f2, args=(top,))
t.start()
top.mainloop() 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询