#python #python-2.7 #matplotlib #tkinter
#python #python-2.7 #matplotlib #tkinter
Вопрос:
Я пишу графический интерфейс Tkinter, также используя matplotlib figures. Поскольку я переключился с дистрибутива Canopy Python 2.7 на установку Python 2.7, установленную вручную, я сталкиваюсь с проводными проблемами с Tkinter checkbuttons. Можно использовать кнопки, но переменная не установлена. Проблема появляется только тогда, когда я включаю matplotlib figure (см. Пример кода, 1-я строка в main()).
Win7-64
Рабочая установка: Enthought Canopy 1.7.4.3348, Python 2.7.11, matplotlib 2.0.0-8
Сейчас (не работает): Python 2.7.16, matplotlib 2.2.4
import Tkinter as tk
import ttk as ttk
import matplotlib.pyplot as plt
class Application(tk.Frame):
def __init__(self, gui_master):
tk.Frame.__init__(self, gui_master)
self.gui_master = gui_master
self.frame = tk.Frame(self.gui_master)
self.frame.grid()
self.var = tk.IntVar()
check_STD = ttk.Checkbutton(self.frame, variable= self.var, command = self.check_select)
check_STD.grid(row = 1, column = 1)
def check_select(self):
print 'var', self.var, self.var.get()
def main():
rp_fig, rp_ax = plt.subplots(1, 1, figsize = (9,9))
gui_root = tk.Tk()
gui_root.title("FXD-CSD-GUI")
app = Application(gui_master=gui_root)
gui_root.mainloop()
plt.show()
main()
Комментарии:
1. использование
rp_fig = plt.Figure(figsize=(9, 9)) rp_ax = rp_fig.add_subplot(111)
этого работает, но я не понимаю, почему…2.
plt.show()
блокирует выполнение любого дальнейшего кода. При использованииmatplotlib.figure.Figure()
вместоplt.figure()
вы не используете pyplot, следовательно, уplt.show()
него нет рисунка для отображения и, следовательно, он не будет блокироваться.