2017-09-25 1 views
0

Ma question concerne python 2.7 tkinter. La difficulté réside dans le fait d'avoir tout le bouton dans une fenêtre en ce moment il ouvre 2 fenêtres, une fenêtre avec la taille que j'ai définie, et une avec tout le bouton sans une taille définie.Python tkinter déplacement des boutons à 1 fenêtre au lieu de 2

le code {insérer circonflexe ici}

from Tkinter import * 

master = Tk() 

class Calculator: 
    def __init__(self,master): 
     self.var = IntVar() 
     frame = Frame(master) 
     frame.grid() 
     f2 = Frame(master,width=500,height=500) 
     f2.grid(row=0,column=1) 


def callback(): 
    print("Hello World") 

b = Button(master, text="Calc", command=callback) 
b.grid() 


e = Entry(master, width=10) 
e.grid() 

e.focus_set() 

b1 = Button(master, text = "Ok", width=10, command = callback) 
b1.grid(row=20, column=30) 


top = Tk() 
app = Calculator(top) 
mainloop() 
+1

Vous ne pouvez pas appeler 'Tk()' deux fois dans le même programme. Si vous voulez réellement plusieurs fenêtres, vous devez utiliser 'Toplevel()' à la place pour chacune d'entre elles sauf la première. – jasonharper

+1

Vous créez deux fenêtres. Pourquoi ne pas simplement créer la deuxième fenêtre? –

Répondre

0

Tkinter nécessite exactement une instance de Tk() pour démarrer l'application tkinter et une instance de mainloop() pour gérer la boucle de mise à jour.

Si vous appelez le Tk() plus d'une fois, vous aurez plusieurs fenêtres et autres choses qui ne fonctionneront pas comme vous le souhaitez.

Si vous avez besoin d'une ou plusieurs fenêtres, vous devrez utiliser Toplevel() pour les créer.

Si vous supprimez:

top = Tk() 

et le changement:

app = Calculator(top) 

à:

app = Calculator(master) 

Vous aurez tout dans une seule fenêtre comme prévu.

+0

merci J'aimerais avoir une meilleure réputation afin que je puisse upvote :-D – kres0345

+0

Content de vous aider. Gardez à l'esprit que votre problème est relativement commun et a été demandé sous diverses formes. La prochaine fois que vous devriez essayer de rechercher un débordement de pile pour des problèmes similaires. 'Tkinter ouvre 2 fenêtres. Je ne sais pas pourquoi »par exemple. Est une question très commune. –