반응형
생성 작업을 수행하는 Python 스크립트를 작성하고 문자열 변수로 저장된 일부 텍스트를 계속 변경했습니다. 이것은 작동하며 문자열이 변경 될 때마다 인쇄 할 수 있습니다.
레이블이 처음으로 문자열을 표시하도록 할 수 있지만 업데이트되지는 않습니다.
내 코드는 다음과 같습니다.
from tkinter import *
outputText = 'Ready'
counter = int(0)
root = Tk()
root.maxsize(400, 400)
var = StringVar()
l = Label(root, textvariable=var, anchor=NW, justify=LEFT, wraplength=398)
l.pack()
var.set(outputText)
while True:
counter = counter + 1
outputText = result
outputText = result
outputText = result
if counter == 5:
break
root.mainloop()
레이블은 Ready
를 표시하지만 나중에 생성 될 때 문자열로 변경하도록 업데이트하지 않습니다.
약간의 인터넷 검색과이 사이트의 답변을 살펴본 후 해결책은 update_idletasks
를 사용하는 것이라고 생각했습니다. 변수가 변경 될 때마다 입력 해 보았지만 도움이되지 않았습니다.
해결 방법
이 창은 메인 루프가 입력 된 후에 만 표시됩니다. 따라서 root.mainloop ()
줄 앞의 while True
블록에서 변경 한 내용을 볼 수 없습니다.
GUI 인터페이스는 메인 루프에있는 동안 이벤트에 반응하여 작동합니다. 다음은 StringVar가 Entry 위젯에도 연결된 예입니다. Entry 위젯에서 텍스트를 변경하면 Label에서 자동으로 변경됩니다.
from tkinter import *
root = Tk()
var = StringVar()
var.set('hello')
l = Label(root, textvariable = var)
l.pack()
t = Entry(root, textvariable = var)
t.pack()
root.mainloop() # the window is now displayed
다음은 수행하려는 작업의 실제 예입니다.
from tkinter import *
from time import sleep
root = Tk()
var = StringVar()
var.set('hello')
l = Label(root, textvariable = var)
l.pack()
for i in range(6):
sleep(1) # Need this to slow the changes down
var.set('goodbye' if i%2 else 'hello')
root.update_idletasks()
root.update
대기중인 모든 이벤트가 Tcl
에 의해 처리 될 때까지 이벤트 루프를 입력합니다.
참조 페이지 https://stackoverflow.com/questions/2603169
반응형
'파이썬' 카테고리의 다른 글
파이썬 파일의 마지막 X 줄을 검색하는 가장 효율적인 방법은 무엇입니까? (0) | 2020.12.07 |
---|---|
파이썬 ImportError : datetime이라는 모듈이 없습니다. (0) | 2020.12.07 |
파이썬 Mac에서 setuptools를 설치하는 방법 (0) | 2020.12.07 |
파이썬 Python으로 JSON에 대한 개체 목록 (0) | 2020.12.06 |
파이썬 조건에서 할당 할 수 있습니까? (0) | 2020.12.06 |
댓글