2017-11-21 3 views
1

Ich versuche, verschiedene Frames zu erstellen und sie zu wechseln/zu zerstören, so dass Sie zwischen Fenstern wie in einer normalen iOS-App wechseln können.Python Tkinter: Platzieren von Schaltflächen im Frame

Um dies zu tun, muss ich die Widgets (Komponenten) in Frames (Container) platzieren.

Wenn ich jedoch versuche, dem Rahmen eine Schaltfläche hinzuzufügen, wird sie nicht auf die rechte Seite gepackt.

Hier ist mein Code: von tkinter import *

root=Tk() 
root.geometry('500x500') 
root.title('Good morning :)') 

frame1=Frame(root,width=500,height=500,bg='green') 
frame1.pack() 

button1=Button(frame1,text='Hello') 
button1.pack(side='bottom') 
+1

Sie vergessen 'root.mainloop()' – furas

+0

Warum denken Sie, dass eines der Widgets auf die rechte Seite gehen sollte? Es gibt nichts in Ihrem Code, der das überhaupt versucht. Sie sagen, Sie haben "alles versucht", also zeigen Sie uns mehr als nur eine Sache, die Sie versucht haben. –

+0

Hier ist die kanonische Dokumentation für die Funktionsweise von 'pack': http://tcl.tk/man/tcl8.5/TkCmd/pack.htm#M26 –

Antwort

1

Sie müssen den Rahmen erweitern das gesamte Fenster der obersten Ebene zu füllen, und Sie müssen den Knopf sagen, auf side='right' statt side='bottom' zu packen .
Und Sie müssen root.mainloop() am Ende ausführen.

from tkinter import * 

root = Tk() 
root.geometry('500x500') 
root.title('Good morning :)') 

frame1 = Frame(root, bg='green') 
frame1.pack(expand=True, fill=BOTH) 

button1 = Button(frame1, text='Hello') 
button1.pack(side=RIGHT) 

root.mainloop() 

Auch brauchen Sie nicht die Dimensionen im Rahmen Aussage, da sie auf die volle 500x500 angegeben in der Geometrie mit den zusätzlichen Schlüsselwort Argumente übergeben, um die pack() Funktion erweitern. Standardmäßig ist der Frame nur groß genug, um die Widgets darin zu enthalten. Er wird also nur so groß wie der Button sein, es sei denn, Sie sagen ihm, dass er auf die volle Größe des Root-Widgets der obersten Ebene erweitert werden soll.

Verwandte Themen