我正在创建一个GUI,其中我有一个TextBox
和一些Button
。
问题是,布局似乎是混乱的。当我增加行数以便我可以很好地分开时,它并没有任何区别。我不确定我在哪里弄错了。
代码:
from Tkinter import *
from tkFileDialog import *
gui = Tk() #create an object
gui.title("xyz")
gui.geometry("900x300")
GuiLabel1 = Label(gui,text="hi everyone!!!!!!")
GuiLabel1.grid(row=0, column=0)
GuiLabel2 = Label(gui,text="File")
GuiLabel2.grid(row=1, column=0)
bar=Entry(gui)
bar.grid(row=1, column=1)
button1= Button(gui, text="Browse")
button1.grid(row=1, column=2)
button2= Button(gui, text="Process")
button2.grid(row=2, column=2)
button3= Button(gui, text="ABC")
button3.grid(row=3, column=0)
button4= Button(gui, text="ABC")
button4.grid(row=3, column=1)
button5= Button(gui, text="ABC")
button5.grid(row=3, column=2)
button6= Button(gui, text="ABC")
button6.grid(row=3, column=3)
button7= Button(gui, text="ABC")
button7.grid(row=3, column=4)
gui.mainloop()
有关GUI的屏幕截图,请参见下图:
答案 0 :(得分:1)
小部件的出现几乎与您告诉他们出现的完全一样。问题是,你依赖很多默认的定位,这可能就是为什么它们不会以你认为的方式出现在屏幕上。
当您使用网格时,您应该几乎总是包含sticky
选项来定义窗口小部件将如何填充它所放置的单元格。您经常需要使用填充来扩充它。最后,您通常应该给至少一行和一列非零权重。
另外,请记住您正在创建网格。如果网格中有非常宽的项目,则会导致整个列变宽。如果在后续行中放置较小的项目,则默认情况下它们将在该列中居中。
答案 1 :(得分:0)
您可以使用" width ="用于均匀空间窗口小部件的参数,请参阅http://effbot.org/tkinterbook/button.htm和行/列配置以显示空行/列
from Tkinter import *
gui = Tk() #create an object
gui.title("xyz")
gui.geometry("900x300")
GuiLabel1 = Label(gui,text="hi everyone!!!!!!")
GuiLabel1.grid(row=0, column=0)
GuiLabel2 = Label(gui,text="File")
GuiLabel2.grid(row=3, column=0)
bar=Entry(gui)
bar.grid(row=1, column=1)
button1= Button(gui, text="Browse", width=test_width)
button1.grid(row=1, column=2)
button2= Button(gui, text="Process", width=test_width)
button2.grid(row=2, column=2)
test_width=20
for ctr in range(4):
button= Button(gui, text="ABC"+str(ctr+1), width=test_width)
button.grid(row=3, column=ctr)
## empty column between
gui.columnconfigure(4, minsize=50)
button7= Button(gui, text="ABC")
button7.grid(row=3, column=5)
gui.mainloop()
答案 2 :(得分:-3)
我认为你可能正在寻找
的混合物pack()
grid()
以及元素Frame
,它允许您将其中的元素“分组”为一个元素。
我无法修复你的代码,但我建议你研究一下并尝试一下。