2013-08-03 78 views
1

我正在尝试使用tkinter库为我的程序创建接口。将窗口部件放到窗口上(使用tkinter)

我的界面应该出现这样的

BUTTON1

BUTTON2

BUTTON3

B.pack(side = "left", padx = 00, pady = 0) 
C.pack(side = "left", padx = 100, pady = 100) 
D.pack(side = "left", padx = 50, pady = 120) 

我已经尝试改变padx和pady, 的参数,但它仍然出现在同一行。我使用Ubuntu 13.04操作系统

如何设置参数,以获得所需的格式

在此先感谢.. :)

回答

1

您可以在三个简单的步骤解决您的问题。首先,删除所有的padx's,因为它们使按钮不对齐。其次,使用anchor = "w"使按钮左对齐。第三,设置side等于"top",以便按钮垂直放置而不是水平放置。 (但是,由于side默认为“top”,因此您可以将其完全删除)。下面是固定的脚本:

from Tkinter import Tk, Button 

root = Tk() 

B = Button(root, text="BUTTON1") 
C = Button(root, text="BUTTON2") 
D = Button(root, text="BUTTON3") 

B.pack(anchor = "w", pady = 0) 
C.pack(anchor = "w", pady = 100) 
D.pack(anchor = "w", pady = 120) 

root.mainloop() 

另一种方法是使用grid方法而不是pack

from Tkinter import Tk, Button, W 

root = Tk() 

B = Button(root, text="BUTTON1") 
C = Button(root, text="BUTTON2") 
D = Button(root, text="BUTTON3") 

# 'row' sets the row number that the widget is placed on 
# 'sticky' is the same as 'anchor' 
B.grid(row=0, pady=0, sticky=W) 
C.grid(row=1, pady=100, sticky=W) 
D.grid(row=2, pady=120, sticky=W) 

root.mainloop() 

虽然我个人比较喜欢gridpack,决定权其实只是一个偏好的问题。

+0

我想你的回答会更好,如果你提到,简单地删除'side = left'并不完全是你的解决方案的原因。相反,'side'的默认值是'“top”',因此明确地将其设置为'“top”'或接受默认值就是解决方案的原因。 –

+0

如果您推荐使用网格,则还应该推荐使用'grid_rowconfigure'和'grid_columnconfigure',以便GUI具有适当的调整大小行为。 –

+0

最后,我不同意电网给予“更大的控制”。这不是更大,只是不同而已。为了将按钮放置在堆叠或排中,包装可以说是优越的。当然,网格在将物体放入网格方面是优越的。至于最大的“控制”,地方可以让你精确地指定一个小部件去哪里。我认为建议只使用“快速简单的图形用户界面”的包装是个不好的建议。我创建了许多复杂的商业图形用户界面,我使用了很多包。正确的建议是全部学习,并使用正确的工具进行工作。 –