2016-04-28 10 views
0

In Python3/tkinter gibt es eine einfache Möglichkeit, die Größe eines ttk.frame als relativ zu seiner übergeordneten Fenstergröße festzulegen und sicherzustellen, dass es (mit all seinen Widgets) richtig auf Fenstergröße anpassen wird?Wie passe ich in Python3/tkinter die Größe eines Frames relativ zur übergeordneten Fenstergröße an?

Als ein bisschen Kontext, versuche ich pack() ein ttk.frame ein paar Pixel kleiner als die root Fensterbreite.

+1

Es gibt keine einfache Antwort auf diese Frage. Einen Rahmen relativ zu dem Elternteil zu erstellen, kann auf viele Arten erfolgen. Es hängt davon ab, was im Rahmen ist, was im übergeordneten Rahmen ist, wie diese Rahmen Paket, Gitter oder Platz verwenden, wie Sie zusätzlichen Speicherplatz handhaben wollen usw. Diese Frage ist einfach zu weit wie geschrieben. –

+0

er legt die Verwendung von Pack, obwohl – Mixone

Antwort

1

Wenn Sie die Größe, die Sie wollen, und es haben Sie tun:

root = # Your root window 
myFrame = ttk.Frame(root, height=desiredHeight, width=desiredWidth) 
myFrame.pack() 

Also, wenn Sie es an die Wurzel relativ wollen:

root = # Your root window 
rootHeight = root.winfo_height() 
rootWidth = root.winfo_width() 
# Say you want it to be 20 pixels smaller 
myFrame = ttk.Frame(root, height=rootHeight-20, width=rootWidth-20) 
myFrame.pack() 
# OR 
myFrame = ttk.Frame(root) # No set dimensions 
myFrame.pack(padx=20, pady=20) 
# This will make it have a padding of 20 pixels on height and width, 
# with respect to parent rather than itself 
+0

Es scheint, schließlich ganz einfach zu sein. Wäre es auch möglich, es relativ zu Eltern (wie in Ihren letzten 2 Codezeilen) zu machen, wenn wir 'place()' anstelle von 'pack()' verwenden würden? –

+0

Ich habe ein wenig ausprobiert, und mit 'place()' können wir einen ähnlichen Effekt erzielen, indem wir so etwas verwenden (in diesem Fall spiele ich den neuen Frame mit der Position relativ zu einem anderen Objekt): 'FRAME.place (in_ = OTHER_OBJECT , relx = 0.95, y = 0, Anker = "se", relwidth = .9) '. Auf diese Weise erhalten wir einen Rahmenriss, der 90% der Fensterbreite aufweist und mit 5% horizontalem Abstand auf beiden Seiten, rechts und links, positioniert ist. –

+0

das ist eine gute Idee zu, aber sei vorsichtig, der 'Platz' Geometriemanager ist muuuuch einfacher, während für diese speziell eine gute Idee, in der Regel ist es das Beste, es zu vermeiden – Mixone

Verwandte Themen