Python:Tkinter帧之间出现意外空间

时间:2017-05-30 10:29:22

标签: python tkinter frame space tk

我正在研究一个向导,因为标题显示出现了意想不到的空格。

我试图将青色和黄色框架粘贴到它们各自的北,西,南和东边界。 没有左框架(元素+列表框+统一字体)它似乎按照我的预期工作,但是当添加它时,它会创建这些灰色间隙。

以下是代码和预览:

from Tkinter import *
import ttk

Mafenetre = Tk()

frame3_root = Frame(Mafenetre, padx=10, pady=10)

frame3_frame_list = Frame(Mafenetre, bg='red')
frame3_frame_list.grid(row=0, column=0, rowspan=3, sticky=W + E + N + S)
Label(frame3_frame_list, text="Elements").pack(padx=20, pady=20)
frame3_listbox_font = Listbox(frame3_frame_list, exportselection=0)
frame3_listbox_font.bind('<<ListboxSelect>>')
frame3_listbox_font.pack()
Button(frame3_frame_list, text='Uniform Font').pack(pady=20, anchor='center')

frame3_frame_font_title = Frame(Mafenetre, bg='blue')
frame3_frame_font_label = Frame(Mafenetre, bg='cyan')
frame3_frame_font_combobox = Frame(Mafenetre, bg='yellow')
frame3_frame_font_title.grid(row=0, column=1, columnspan=2, sticky=W + E + N)
frame3_frame_font_label.grid(row=1, column=1, sticky=N + W + E + S)
frame3_frame_font_combobox.grid(row=1, column=2, sticky=W + E + N + S)

Label(frame3_frame_font_title, text="Font Family").pack(padx=20, pady=20)
Label(frame3_frame_font_label, text="Family:").pack(padx=15, pady=10, anchor='nw')
Label(frame3_frame_font_label, text="Style:").pack(padx=15, pady=10, anchor='nw')
Label(frame3_frame_font_label, text="Size:").pack(padx=15, pady=10, anchor='nw')
Label(frame3_frame_font_label, text="Color:").pack(padx=15, pady=18, anchor='nw')

fontVar = StringVar()
fontStyleVar = StringVar()
frame3_combobox_font = ttk.Combobox(frame3_frame_font_combobox, textvariable=fontVar)
frame3_combobox_font['values'] = ('Arial', 'Comic', 'Times New Roman')

frame3_combobox_font.current(1)
frame3_combobox_font.bind("<<ComboboxSelected>>")
frame3_combobox_font.pack(pady=10, anchor='w')

frame3_combobox_font_style = ttk.Combobox(frame3_frame_font_combobox, textvariable=fontStyleVar)
frame3_combobox_font_style['values'] = ('Bold', 'Italic')

frame3_combobox_font_style.current(1)
frame3_combobox_font_style.bind("<<ComboboxSelected>>")
frame3_combobox_font_style.pack(pady=10, anchor='w')

Spinbox(frame3_frame_font_combobox, from_=2, to=300).pack(pady=10, anchor='w')
Button(frame3_frame_font_combobox, text='Font Color').pack(pady=10, anchor='center')


Mafenetre.mainloop()

enter image description here

感谢您抽出时间和可能的答案。

1 个答案:

答案 0 :(得分:0)

蓝色&#34;字体系列&#34;正下方的空间frame是已分配给&#34; Font Family&#34;标签。 frame3_frame_font_title没有&#34;坚持&#34;在它的空间底部。由于它不够高,无法填满空间,因此该空间未被使用。

您可以通过将frame3_frame_font_title的粘性设置为W + E + N + S(或者更容易阅读并输入文字字符串"wens"来看到这一点。无论是解决方案还是不是我不能说,因为我不确切知道最终结果应该是什么样的。

黄色和青色框架下方的空间是根窗口的第2行,它在最右边的列中没有任何内容。它是第2行的原因是因为frame3_frame_list的{​​{1}}为3,这意味着它占据了行0,1和2.

如何解决问题

你没有准确解释你想要达到的目标,所以很难给出具体的建议。我的建议是重新开始,并尝试一次解决一个问题。

例如,从一个空窗口开始。添加六个帧 - 三行两列。让这些完全像你想要的那样。请记住配置行和列的权重,以便在调整窗口大小时适当地增大和缩小。

完成后,您可以开始为其中一个区域添加小部件。例如,仅添加&#34;元素&#34;标签,并确保它看起来正确。然后添加&#34;字体系列&#34;标签,等等。