Флажок Python tkinter не работает должным образом при использовании matplotlib - PullRequest
0 голосов
/ 02 ноября 2019

Я только что столкнулся с интересной проблемой с флажком виджета tkinter и надеялся, что, возможно, кто-нибудь сможет объяснить мне, что именно здесь происходит.

Итак, я использую флажок, а также использую рисунок matplotlib.

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib import figure
import tkinter as tk
from tkinter.filedialog import asksaveasfilename

class Problem:
    def __init__(self):
        self.fig = plt.figure()
        self.root = tk.Tk()
        self.label = tk.Label(self.root, text="Graph")
        self.label.grid(column=0, row=0)  


        self.sfnflag = tk.IntVar()

        self.c1 = tk.Checkbutton(master = self.root, text="Save Data from now on",
                            command=self.save_from_now, variable = self.sfnflag)
        self.c1.grid(column=1, row=3)

        self.root.update()

    def save_from_now(self):
        print(self.sfnflag.get())
GUI()

При установке и снятии флажка всегда печатается ноль. Однако, если я вызову tk.Tk () перед plt.figure (), флажок будет работать, как и ожидалось, давая чередующиеся 1 и 0.

При поиске причины этой проблемы я видел похожие случаи, когда люди использовали несколько экземпляров Tk (). Я смутно осознаю, что matplotlib также использует tkinter, поэтому я предполагаю, что создание фигуры matplotlib также вызывает Tk () или что-то еще?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...