【发布时间】:2016-11-26 12:30:50
【问题描述】:
我为我的 GUI 创建了 3 个框架(页面)并添加了几个小部件来显示我的 GUI 的基本框架。
我已使用.grid_propagate(0) 方法阻止我的框架根据其中的小部件调整大小。
代码见下:
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()
当我向win3 添加小部件时出现问题。如果我注释掉与win3 相关的代码,所有帧都保持在指定的大小,一切看起来都很好。然而,即使是在 win3 中添加一个简单的标签小部件,框架大小似乎也可以根据小部件的大小进行调整。 - 这不是我想要的!
附言
这个问题似乎不是 win3 独有的,因为注释掉另一个框架小部件可以解决重新调整大小的问题。
任何反馈都将不胜感激!
【问题讨论】:
-
注意:如果您使用
pack将小部件放入框架中,grid_propagate(0)将没有任何效果。如果您使用的是pack,则必须使用pack_propagate。
标签: python python-2.7 class user-interface tkinter