Ich habe 3 Frames (Seiten) für meine GUI erstellt und ein paar Widgets hinzugefügt, um ein grundlegendes Framework meiner GUI zu zeigen.Das Hinzufügen von Widgets zur dritten Seite bewirkt, dass Frames die Größe anpassen
Ich habe die Methode .grid_propagate(0)
verwendet, um meine Frames daran zu hindern, die Größe basierend auf den Widgets in ihnen anzupassen.
siehe unten Code:
from Tkinter import *
# from tkFileDialog import askopenfilename
# from Function_Sheet import *
# from time import sleep
# import ttk, ttkcalendar, tkSimpleDialog, csv, pyodbc, threading
# from Queue import Queue
# import os
# cwd = os.getcwd()
class CA_GUI:
def __init__(self, master):
### Configure ###
win_colour = '#D2B48C'
master.title('CA 2.0'), master.geometry('278x289'), master.configure(background='#EEE5DE')
win1, win2, win3 = Frame(master, background=win_colour, bd=5, relief=GROOVE, pady=10, padx=20, width=260, height = 270), Frame(master, background=win_colour, bd=5, relief=GROOVE, pady=10, padx=20, width=260, height = 270), Frame(master, background=win_colour, bd=5, relief=GROOVE, pady=10, padx=20, width=260, height = 270)
### Grid Frames ###
for window in [win1,win2,win3]:
window.grid(column=0, row=0, sticky='news', pady=10, padx=10)
window.grid_propagate(0)
### Window 1 ###
self.win1_label1 = Label(win1, text = 'This is page 1!')
self.win1_label1.pack(fill = X, side = TOP)
self.win1_button1 = Button(win1, text = 'Close', command = master.quit)
self.win1_button1.pack(fill = X, side = BOTTOM)
self.win1_button2 = Button(win1, text = 'Page 2', command = lambda:self.next_page(win2))
self.win1_button2.pack(fill = X, side = BOTTOM)
### Window 2 ###
self.win2_label1 = Label(win2, text = 'This is page 2!')
self.win2_label1.pack(fill = X, side = TOP)
self.win2_button1 = Button(win2, text = 'Close', command = master.quit)
self.win2_button1.pack(fill = X, side = BOTTOM)
self.win2_button2 = Button(win2, text = 'Page 3', command = lambda:self.next_page(win3))
self.win2_button2.pack(fill = X, side = BOTTOM)
### Window 3 ###
self.win3_label1 = Label(win3, text = 'This is page 3!')
self.win3_label1.pack(fill = X, side = TOP)
win1.tkraise()
def next_page(self, window):
window.tkraise()
root = Tk()
b = CA_GUI(root)
root.mainloop()
Das Problem kommt, wenn ich Widgets win3
Zugabe bin. Wenn ich den Code, der sich auf win3
bezieht, auskommentieren, bleiben alle Rahmen in ihrer spezifizierten Größe und alles sieht gut aus. Wenn Sie sogar ein einfaches Label-Widget zu win3 hinzufügen, scheinen sich die Frames-Größen an die Größe ihrer Widgets anzupassen. - Das will ich nicht!
P.S.
Das Problem scheint nicht ausschließlich win3
zu sein, da das Auskommentieren eines anderen Frames-Widgets das Problem der Größenänderung löst.
Jede Rückmeldung wäre willkommen!
Hinweis: 'grid_propagate (0)' hat keine Auswirkungen, wenn Sie 'pack' verwenden, um die Widgets in den Rahmen zu setzen. Sie müssen 'pack_propagate' verwenden, wenn Sie' pack' verwenden. –