1

我一直在学习 Tkinter,我写了一个小代码,我希望三个帧成为一个帧的一部分。现在,当我逐行执行此代码时,它会按预期工作。然而,在将它作为一个整体程序运行时,第一帧和第二帧之间有很多空白。

from Tkinter import *
tk = Tk()
tk.geometry("")
main_frame = Frame(tk)
main_frame.grid(row=0)
frame1 = Frame(main_frame, bg="blue", width=200, height=400, borderwidth =1)
frame1.grid(row=0, column=0)
frame2 = Frame(main_frame, bg="green", width=800, height=400)
frame2.grid(row=0, column=1)
frame3 = Frame(main_frame, bg="orange", width=1000, height=100)
frame3.grid(row =1)
tk.mainloop()

另一个问题是如果我最大化窗口并将其更改回原始大小,或者我拉​​伸这个主窗口。我看到帧重叠和一些鬼影。有人可以解释这种奇怪的行为。

问候

4

1 回答 1

4

问题在于您对其进行网格化的方式。默认情况下,每个对象都被网格化为一个块。所以,你的网格看起来像这样:

 -------------------------------
 |    frame 1     |  frame 2   |
 -------------------------------
 |    frame 3     |  nothing   |
 -------------------------------

在这种情况下,由于要大得多,因此frame1所坐的区域会扩大以容纳。此处的解决方法是指定关键字以允许跨越网格上的多于 1 列。frame3frame3columnspanframe3

frame3.grid(row=1,column=0,columnspan=2)
于 2012-07-11T14:50:51.123 回答