【发布时间】:2022-08-09 16:44:53
【问题描述】:
我有两个独立的语言版本相当复杂的应用程序。我正在尝试在两个版本之间进行流畅的切换。我正在尝试使用多线程来维护 tkinter GUI。
import time
import threading
from tkinter import *
language = \'\'
class PolishApp:
def _init__(self):
pass
def do_something(self):
while language == \'polish\':
print(\'working in polish...\')
time.sleep(0.5)
class EnglishApp:
def _init__(self):
pass
def do_something(self):
while language == \'english\':
print(\'working in english...\')
time.sleep(0.5)
def change_to_polish():
print(\'change to polish\')
language = \'polish\'
polish_app.do_something()
def change_to_english():
print(\'change to english\')
language = \'english\'
english_app.do_something()
english_app = EnglishApp()
polish_app = PolishApp()
window = Tk()
window.title(\"choose language\")
window.geometry(\'350x200\')
btn = Button(window, text=\"ENGLISH\", command=threading.Thread(target=change_to_english).start())
btn2 = Button(window, text=\"POLISH\", command=threading.Thread(target=change_to_polish).start())
btn.grid(column=1, row=0)
btn2.grid(column=2, row=0)
print(language)
window.mainloop()
当我运行代码时,它立即执行函数:change_to_polish()、change_to_english(),当我单击按钮时什么也不做。
有谁知道这怎么可能?我可能把多线程概念搞砸了。
-
回调应该是函数或方法,而不是线程。
标签: python multithreading tkinter