파이썬의 Tk 인터페이스는 쓰레드를 사용할 때 약간의 문제가 있다는 것을 알고 있고, 이미 문제가 있습니다. 내 생각은 이제 Queue.Queue
을 사용하여 다음 예제와 같이 Tk 메인 루프에 이벤트를 전달합니다. 물론파이썬 Tk를 쓰레드 코드의 프론트 엔드로 사용하기
from Tkinter import *
import Queue
import time
# this queue will be filled by other threads
queue = Queue.Queue()
queue.put("Helloooo!")
queue.put("hi there, everyone!")
class Application(Frame):
def update(self):
while True:
try:
text = queue.get(False)
self.hi_there["text"] = text
time.sleep(3)
except Queue.Empty:
self.quit()
def create_widgets(self):
self.hi_there = Label(self)
self.hi_there["text"] = "Hello"
self.hi_there.pack({"side": "left"})
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.create_widgets()
root = Tk()
app = Application(master=root)
app.update()
app.mainloop()
, 내가 update
에게 자신을 호출하지 않아야합니다 (이것은 UI도 표시되기 전에 모든 것을 실행합니다)하지만 주회 돌이 동안 그 처리의 Tk가 필요합니다.
특정 상황에서 깨지지 않는 Tk로이를 수행 할 수있는 확실한 방법이 있습니까? 아니면 그냥 Qt에 의존해야합니까?
답변을 참조 2400262/code-a-timer-in-a-python-gui-in-tkinter –
여러분 중 한 명은 대답으로 게시합니다! – agf
@eryksun : 나는이 방법들에 대해 잘 몰랐습니다. – Debilski