이미지를 전달할 수있는 간단한 모듈을 작성하고 Tkinter 창을 만들고 표시합니다. 문제는 내가 별도의 스레드에서 이미지를 표시하는 메서드를 인스턴스화하고 호출 할 때 Tkinter 창이 닫힐 때까지 주 프로그램이 계속 실행되지 않는다는 것입니다. 여기 별도의 스레드에서 Tkinter 폼 실행
내 모듈입니다 :import Image, ImageTk
import Tkinter
class Viewer(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self,parent)
self.parent = parent
self.initialize()
def initialize(self):
self.grid()
def show(self,img):
self.to_display = ImageTk.PhotoImage(img)
self.label_image = Tkinter.Label(self,image=self.to_display)
self.label_image.grid(column = 0, row = 0, sticky = "NSEW")
self.mainloop()
아래 하나,이 경우에도, 내 테스트 프로그램을 계속 할 수없는 것 것처럼 내가 내 테스트 프로그램에서 호출하는 경우를 제외하고, 잘 작동하는 것 같다
다른 스레드에서 시작되었습니다.
import Image
from viewer import Viewer
import threading
def showimage(im):
view = Viewer(None)
view.show(im)
if __name__ == "__main__":
im = Image.open("gaben.jpg")
t = threading.Thread(showimage(im))
t.start()
print "Program keeps going..."
나는 아마 내 문제는 내가 모듈 자체 내에서 새로운 쓰레드를 생성해야한다,하지만 난 파이썬에 새로운 오전 나는, 그냥 시도하고 간단하게하고 싶은 것을 생각합니다.
어쨌든 사전에 도움을 청하십시오.
편집 : 명확성을 위해, 나는 이미지를 표시하고 싶을 때마다이 모듈을 사용할 수 있도록 Tkinter 창에 이미지를 표시하는 모듈을 만들려고합니다. 내가 가지고있는 문제는 프로그램이이 모듈을 사용할 때마다 Tkinter 창이 닫힐 때까지 다시 시작할 수 없다는 것입니다.
답변의 첫 부분은 좋지만 다른 툴킷을 사용해 보려는 조언 때문에 upvote 할 수 없습니다. Tkinter는이 질문에 관한 유형에 완벽하게 적합합니다. –