Tôi đã viết một mô-đun ngắn có thể được chuyển qua một hình ảnh và chỉ cần tạo một cửa sổ Tkinter và hiển thị nó. Vấn đề tôi gặp phải là ngay cả khi tôi khởi tạo và gọi phương thức hiển thị hình ảnh trong một luồng riêng biệt, chương trình chính sẽ không tiếp tục cho đến khi cửa sổ Tkinter đóng lại.Chạy biểu mẫu Tkinter trong một chủ đề riêng biệt
Dưới đây là mô-đun của tôi:
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()
Có vẻ như để làm việc tốt, ngoại trừ khi tôi gọi nó từ chương trình thử nghiệm của tôi như hình dưới đây, nó sẽ không có vẻ để cho phép chương trình thử nghiệm của tôi để tiếp tục, ngay cả khi bắt đầu trong một chủ đề khác.
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..."
Tôi nghĩ rằng có lẽ vấn đề của tôi là tôi nên tạo một chủ đề mới trong các mô-đun riêng của mình, nhưng tôi đã muốn chỉ cần cố gắng và giữ nó đơn giản, như tôi mới để Python.
Dù sao, cảm ơn trước vì bất kỳ trợ giúp nào.
chỉnh sửa: Để rõ ràng, tôi chỉ đang cố tạo mô-đun sẽ hiển thị hình ảnh trong cửa sổ Tkinter, để tôi có thể sử dụng mô-đun này bất kỳ lúc nào tôi muốn hiển thị hình ảnh. Vấn đề mà tôi gặp phải là bất cứ khi nào một chương trình sử dụng mô-đun này, nó không thể tiếp tục cho đến khi cửa sổ Tkinter được đóng lại.
Phần đầu tiên của câu trả lời là tốt, nhưng tôi không thể upvote vì lời khuyên để thử các bộ công cụ khác. Tkinter hoàn toàn phù hợp với loại câu hỏi này là về. –