在Tkinter中打包一个新的框架后,窗口突然收缩

时间:2015-01-31 01:28:46

标签: python-3.x tkinter

我正在开发一个应该占据整个屏幕的应用程序。当我开始时,我最初的意图是切换框架很多。例如,让我们说用户想要进入设置。它将从主框架切换到设置框架。

然而,对于其他框架的一些复杂情况,我发现我必须在第一帧下面添加另一个框架。例如,它将在主屏幕框架下方有一个主框架,因此如果用户决定打开设置,它将忘记主框架,并在主框架上显示设置框架。

我的问题是,当我添加下面的所有内容框架时,事情变得混乱。 Tk()小部件很小,当我点击并拖动它时,一切都不成比例。但是,当我点击按钮时它确实显示了设置:D。

这是我的代码:

self.main = Tk()
self.mainFrame = Frame()
self.mainFrame.pack(expand = True, fill = "both")

self.padding = Canvas(self.mainFrame, width = 1439, height = 
self.CANVAS_HEIGHT)
self.padding.pack()

self.startFrame = Frame(self.mainFrame)
self.startFrame.place(relx = 0.0, rely = 0.0, anchor = "nw")

self.settingsFrame = Frame(self.mainFrame)
self.settingsCanvas = Canvas(self.settingsFrame, bg = "saddleBrown", width = self.CANVAS_WIDTH,  height = self.CANVAS_HEIGHT)
self.settingsCanvas.pack()

self.startFrame.pack_forget()
self.settingsFrame.pack()

再次,当我运行代码时,一切都是不成比例的。 如果不清楚,请告诉我。

1 个答案:

答案 0 :(得分:0)

请注意,您要startFrame,然后pack_forget place_forget,但您应该place

除了代码中的一些奇怪内容之外,我不建议在这种情况下使用place,pack应该做得更好(实际上我在一些特定情况下使用过pack)。

如果您决定使用startFrame.pack(expand=True, fill='both') # both = x and y 几何体管理器,并且您希望框架与窗口一起调整大小,则应指明您希望它们展开并最终填充两个方向上的最终自由空间和水平(或y和x):

Frame

如果您想为pack提供固定尺寸,请参阅 Bryan Oakley post

我真的建议你在{{1}}几何管理器上观看一些教程或参考资料,因为如果你想认真做一些事情,它真的很有用。你可以从Effbot的reference开始阅读。