Tôi có một chương trình chạy một quy trình dài sau khi bạn nhấp vào nút tác vụ. Khi quá trình đang chạy cửa sổ gốc sẽ nói rằng nó không phản hồi mặc dù tôi biết chương trình đang chạy trong nền. Chương trình này sẽ được phát hành cho một vài người mà tôi làm việc cùng và tôi muốn đảm bảo rằng họ không phải lo lắng và đóng cửa sổ khi họ thấy điều này. Các giải pháp tôi có đang ngồi một root.update trong vòng lặp của quá trình đang chạy nhưng tôi không chắc chắn đây là sửa chữa tốt nhất.Cửa sổ Tkinter nói (không phản hồi) nhưng mã đang chạy
Sử dụng python 3.3
Dưới đây là một mẫu mã để bạn có được một ý tưởng về những gì tôi đang làm, điều này được gọi từ các vòng lặp chính:
def combine(boxes_to, boxes_from, frame):
to_value,to_pos = gui.checkBoxes(boxes_to)
from_value,from_pos = gui.checkBoxes(boxes_from)
frame.destroy()
running = Label(root,text="Running please do not close..",font = (16))
running.pack()
root.update()
map_to = open("map_to",'r')
for line in map_to:
root.update()
process(line)
running.destroy()
map_to.close()
finish = Button(root, text="Done",command=gui.stop)
finish.pack()
Bạn nên chạy quá trình nền trong một chuỗi khác. Chương trình đơn luồng của bạn chỉ có thể thực hiện một việc tại một thời điểm. Khi quá trình chạy dài của bạn đang chạy giao diện người dùng không thể theo kịp. – korylprince