xem xét chạy đoạn mã sau (lưu ý nó là một phiên bản cực kỳ đơn giản để chứng minh vấn đề):Tkinter/Matplotlib backend xung đột gây mainloop vô hạn
import matplotlib.pyplot as plot
from tkinter import * #Tkinter if your on python 2
def main():
fig = plot.figure(figsize=(16.8, 8.0))
root = Tk()
w = Label(root, text="Close this and it will hang!")
w.pack()
root.mainloop()
print('Code never reaches this point')
if __name__ == '__main__':
main()
Đóng cửa sổ đầu tiên sẽ hoạt động tốt, nhưng đóng cửa sổ thứ hai làm cho mã bị treo, vì root.mainloop()
gây ra một vòng lặp vô hạn. Vấn đề này là do gọi số fig = plot.figure(figsize=(16.8, 8.0))
. Có ai biết làm thế nào để có được gốc để đóng thành công sau khi thực hiện cuộc gọi matplotlib.pyplot?
'pyplot' cũng bắt đầu lên đó là vòng lặp chính mà tôi nghi ngờ là vấn đề của bạn. Xem http://matplotlib.org/examples/user_interfaces/ để biết cách nhúng mpl vào gui theo lựa chọn của bạn – tacaswell
Có cách nào để buộc đóng một vòng chính pyplot không? Vấn đề ảnh hưởng đến tất cả các cửa sổ tkinter sau sau cuộc gọi pyplot, ngay cả trong các mô-đun khác nhau. – TheoretiCAL