Comment puis-je créer une fenêtre pop-up dans tkinter?
J'ai un problème de création d'une fenêtre popup pour un programme.
Code:
from tkinter import *
from tkinter import ttk
import tkinter as tk
def popupBonus():
popupBonusWindow = tk.Tk()
popupBonusWindow.wm_title("Window")
labelBonus = Label(popupBonusWindow, text="Input")
labelBonus.grid(row=0, column=0)
B1 = ttk.Button(popupBonusWindow, text="Okay", command=popupBonusWindow.destroy())
B1.pack()
class Application(ttk.Frame):
def __init__(self, master):
ttk.Frame.__init__(self, master)
mainwindow = ttk.Frame(self)
self.buttonBonus = ttk.Button(self, text="Bonuses", command=popupBonus)
self.buttonBonus.pack()
Le code génère une fenêtre avec un bouton et lorsque vous appuyez sur le bouton, il est censé générer une fenêtre pop-up avec le titre "Fenêtre" texte "Entrée", et disposent d'un bouton disant "Ok" pour quitter la fenêtre et revenir à la fenêtre principale. Cependant, j'obtiens cette erreur.
Traceback (most recent call last):
File "D:\Softwares\Python 3.6.0\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:\Users\J---- M--\Desktop\Python\GUI-Messagebox 5.py", line 12, in popupBonus
B1 = ttk.Button(popupBonusWindow, text="Okay", command=popupBonusWindow.destroy())
File "D:\Softwares\Python 3.6.0\lib\tkinter\ttk.py", line 614, in __init__
Widget.__init__(self, master, "ttk::button", kw)
File "D:\Softwares\Python 3.6.0\lib\tkinter\ttk.py", line 559, in __init__
tkinter.Widget.__init__(self, master, widgetname, kw=kw)
File "D:\Softwares\Python 3.6.0\lib\tkinter\__init__.py", line 2293, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: NULL main window
Je n'ai aucune idée de ce qu'est le problème. J'ai essayer de trouver des réponses pour 4 heures et fondamentalement abandonné.
Aussi, je ne veux pas utiliser tkinter, la fonction messagebox parce que je ne veux pas le point d'exclamation image et je veux inclure plusieurs checkboxs à l'intérieur de la fenêtre pop-up plus tard.
- a) de ne pas créer plus d'une instance de
Tk
, et b) voir effbot.org/tkinterbook/tkinter-dialog-windows.htm command=
attend le nom de la fonction (rappel) - sans()
. Maintenant vous exécutezpopupBonusWindow.destroy()
et son résultat - probablementNone
- assigner àcommand=
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé 3 erreurs
Toplevel()
au lieu deTk()
pour créer le deuxième/troisième fenêtrecommand=
attend de rappel - le nom de la fonction sans()
(mais vous l'utilisez
popupBonusWindow.destroy()
)pack()
etgrid()
dans une fenêtre ou un cadre(mais vous l'utilisez
grid()
etpack()
en popup)Mais vous pouvez également utiliser les haut-messageboxes comme
showinfo()