Я заметил несколько проблем, которые нужно решить.
Во-первых, способ импорта (from tkinter import *
) вызовет проблемы, и фактически здесь, в этом случае, вы делаете вид ошибки, которой известен этот импорт. Позже в вашем коде вы делаете Frame = ttk.Frame()
, и эта строка фактически переопределяет импорт Frame
из from tkinter import *
. Не называйте ваши переменные так же, как встроенные методы. Чтобы предотвратить такую ошибку, вы можете просто сделать import tkinter as tk
и всегда использовать префикс tk.
для предотвращения переопределения в вашем коде.
Затем я заметил, что ваш ярлык упаковывается на экране, но не показывает какой-либо текст достаточно странно, но когда я закомментирую f = plt.figure(0, figsize=(20,9))
ярлык начинает работать как положено.
Так что здесь есть какое-то странное взаимодействие с matplotlib и этим ярлыком.
Когда я меняю f = plt.figure(0, figsize=(20,9))
на f = Figure(figsize=(20,9))
, этикетка также снова работает.
Если Figure()
не совсем то, что вы пытаетесь использовать здесь, пожалуйста, добавьте еще немного контекста в ваш код относительно того, что вы ожидаете сделать с f
.
Обновление:
Я также заметил, что когда вы перемещаете f
после self.win = tk.Tk()
, код работает нормально. Мое единственное предположение относительно того, почему это происходит, возможно, так как у matplotlib есть собственный код tkinter. Так что, если вы попытаетесь создать plt.figure
перед созданием экземпляра tkinter, то я представляю во внутреннем интерфейсе экземпляр tkinter, запускаемый matplotlib, и это вызывает странное поведение. Я могу ошибаться, но я не могу думать ни о чем другом. Может быть, мастер Tkinter Брайан Окли сможет объяснить нам, что вызывает это: D
import tkinter as tk
import tkinter.ttk as ttk
import matplotlib
import matplotlib.artist as artists
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.figure import Figure
import matplotlib.animation as animation
class make_window():
def __init__(self, *args, **kwargs):
self.win = tk.Tk()
# moving the line to here should at least allow your code to work.
f = plt.figure(0, figsize=(20,9))
self.win.title("Test")
self.win.state("zoomed")
frame = ttk.Frame(self.win)
frame.pack()
labelVar = tk.StringVar()
labelVar.set("Hi")
self.LabelUpdate = tk.Label(frame, textvariable = labelVar)
self.LabelUpdate.pack()
window = make_window()
window.win.mainloop()