Почему tkinter создает два дополнительных окна?Python

Программы на Python
Ответить
Anonymous
 Почему tkinter создает два дополнительных окна?

Сообщение Anonymous »

Я создаю игру в tkinter, используя классы для переключения кадров, однако всякий раз, когда я запускаю ее, я получаю 2 дополнительных окна, одно из которых при уничтожении выдает эту ошибку:

Код: Выделить всё

Exception in Tkinter callback Traceback (most recent call last): File "D:\Thonny\lib\tkinter_init_.py", line 1921, in call return self.func(*args) File "D:\Thonny\lib\tkinter_init_.py", line 2342, in destroy Misc.destroy(self) File "D:\Thonny\lib\tkinter_init_.py", line 665, in destroy self.tk.deletecommand(name) _tkinter.TclError: can't delete Tcl command
Я думаю, это может быть связано с вызовом Tk(), а также с чем-то связанным с super() и init, но я действительно не знаю, что они делают
Мой код:
р>

Код: Выделить всё

import tkinter as tk
from tkinter import *
from tkinter import ttk,font
from tkinter.messagebox import showinfo
from tkinter import messagebox
import shelve
from PIL import ImageTk,Image     #I know there are some that are probably unnescesary but
#it works so i dont waant to touch it T.T

Game=Tk()

class Game(tk.Tk):
def __init__(self):
global background
tk.Tk.__init__(self)
super().__init__()
self.geometry('992x558')
background=ImageTk.PhotoImage(Image.open('background.png'),master=self)
backgroundlabel= Label(self,image=background).place(x=0,y=0)
self.iconbitmap('icon.ico')
self._frame = None
self.switchframe(npcheck)

def switchframe(self, frameclass):
newframe = frameclass(self)
print(frameclass(self))
if self._frame is not None:
self._frame.destroy()            # destroy old frame
self._frame = newframe             #set new frmae
self._frame.grid()              ##draw new frame

class npcheck(tk.Frame):                #new player check
def __init__(self, master):
tk.Frame.__init__(self, master)
#tk.Frame.__init__(self, master,image=background)
backgroundlabel= Label(self,image=background).place(x=0,y=0)
q=Label(self, text= 'New or existing player?')
q.grid(row=0,column=1,sticky=W+E,padx=50,pady=50)
gobutton= Button(self,text='New Player.', command=lambda: master.switchframe(accountcreation))
gobutton.grid(row=1,column=0,sticky=W,padx=50,pady=50)
gobutton= Button(self,text='Existing Account.', command=lambda: master.switchframe(login))
gobutton.grid(row=1,column=2,sticky=E,padx=50,pady=50)

if __name__ == "__main__":
game = Game()
game.mainloop()
Я попробовал удалить Game=Tk() и немного повозиться с ним, но это только еще больше сломало его Т.Т.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ra-windows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»