Tôi có một chương trình rất đơn giản hiển thị một âm mưu đơn giản trên một nút bấm. Vấn đề của tôi là khi tôi đóng cửa sổ ứng dụng, chương trình tiếp tục chạy cho đến khi tôi xóa nó khỏi thiết bị đầu cuối. Dưới đây là mã của tôi và điều tra của tôi cho thấy vấn đề là doĐóng cửa sổ không giết tất cả các quy trình
matplotlib.use('TkAgg')
Nhưng tôi không biết cách khắc phục! Nếu nó giúp, tôi đang chạy trên OSX.
#!/usr/bin/python
from Tkinter import *
import matplotlib
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.pyplot as plt
# ------ End of imports
class Ops:
def show_plot(self):
self.f, self.figarray = plt.subplots(1, sharex=True, sharey=True)
self.figarray.plot((1,2,3),(1,2,3))
plt.tight_layout()
self.canvas = FigureCanvasTkAgg(self.f, master=self.mainFrame)
self.canvas._tkcanvas.config(background='white', borderwidth=0, highlightthickness=0)
self.canvas._tkcanvas.pack(side=TOP, fill=BOTH)
class GUI(Ops):
def __init__(self, master):
self.master = master
self.width = self.master.winfo_screenwidth() # Width of the screen
self.height = self.master.winfo_screenheight() # Height of the screen
self.x = (self.width/2)
self.y = (self.height/2)
self.master.geometry("%dx%d+%d+%d" % (self.width, self.height, self.x, self.y))
self.mainFrame = Frame(self.master) # Generate the main container
self.mainFrame.pack()
# ---------- TOP FRAME ----------
self.topFrame = Frame(self.mainFrame)
self.topFrame.pack()
self.browse_button = Button(self.topFrame, text="Plot", command=self.show_plot)
self.browse_button.grid()
class App:
def __init__(self):
self.file_handler = Ops()
self.root = Tk()
self.gui_handler = GUI(self.root)
def run(self):
self.root.mainloop()
Application = App()
Application.run()
Mã ở trên là chính xác; phải có cái gì khác ngăn cản quá trình dừng lại. Bạn có tạo các tiến trình con hoặc các chuỗi daemon không? –
@AaronDigulla Vấn đề phát sinh khi dữ liệu được vẽ. Nếu không nó thoát khỏi tốt. Bây giờ tôi đã thêm toàn bộ mã với dữ liệu giả để nó có thể được sao chép lại. – Sepehr
Nó có treo khi bạn thoát ra trong khi dữ liệu được vẽ không? Liệu nó có treo, sau khi âm mưu đã kết thúc? –