#python #tkinter #python-3.9 #thonny
Вопрос:
В настоящее время я работаю над проектом, в котором есть домашняя страница и строка меню. В строке меню, когда выбор сделан, он должен открыть другой графический интерфейс. Однако я получаю ошибку, как показано на рисунке.
Exception in Tkinter callback
Traceback (most recent call last):
File "C:Users****AppDataLocalProgramsThonnylibtkinter__init__.py", line 1705, in __call__
return self.func(*args)
File "C:Users****Desktop*********************Homepage.py", line 41, in MSC_01
my_label = Label(root, image=bg)
File "C:Users****AppDataLocalProgramsThonnylibtkinter__init__.py", line 2766, in __init__
Widget.__init__(self, master, 'label', cnf, kw)
File "C:Users****AppDataLocalProgramsThonnylibtkinter__init__.py", line 2299, in __init__
(widgetName, self._w) extra self._options(cnf))
_tkinter.TclError: image "pyimage2" doesn't exist
Мне интересно, может ли кто-нибудь помочь мне здесь, так как я не знаю, почему это происходит. Ниже прилагается мой код.
import csv,random,time,os
from itertools import count
import pandas as pd
import numpy as np
import tkinter as tk
from tkinter import*
from PIL import ImageTk, Image
root = Tk()
root.title('LV Condition Monitoring')
root.geometry("1000x980")
#define image
bg1 = PhotoImage(file="C:/Users/****/Desktop/******/******/****/******.png")
my_label1 = Label(root, image=bg1)
my_label1.place(x=0, y=0, relwidth=1, relheight=1)
my_text1 = Label(root, text="Low Voltage Condition Monitoring", font=("Arial",20), fg="black")
my_text1.pack(pady=50)
my_menu = Menu(root)
root.configure(menu=my_menu)
def MSC_01():
*tkinter GUI code*
#Create menu item
open_menu = Menu(my_menu)
my_menu.add_cascade(label="Open", menu=open_menu)
open_menu.add_command(label="MSC 01", command=MSC_01)
root.mainloop()
Комментарии:
1. Код в вашей обратной трассировке не совпадает с кодом в вашем примере. Вы же не пытаетесь создать вторую
root
, не так ли?2. Использовать
<tk.Toplevel()>
для нового окна3. @TimRoberts Я на самом деле пытаюсь создать 2-й корень
4. @Sujay, поэтому я добавляю его в корень = tk. Верхний уровень() ?
5. Только не так.
abc=Topleve()
. Затем используйтеabc
или любую другую переменную в качестве основной для виджетов, которые вы хотите разместить во втором окне