1

我已经开始学习 TK(来自 Python)。我觉得我可以使用网格布局管理器来显示小部件(这听起来很容易)但现在我觉得这是一个错误的决定。例如,我只是计划一个框架,里面有多个框架(类似向导的形式)。所以在那个表单的底部我想要两个按钮(下一个,上一个)。现在我想把它们放在底部框架的最右边,但是这样安排似乎很困难。

我尝试为两个按钮创建单独的内部框架,但无法得到我的结果。有人可以告诉我是否可以使用网格布局管理器实现这样的结果

from Tkinter import *
tk = Tk()
main_frame = Frame(tk)
main_frame.grid(row=0)
frame3 = Frame(main_frame, bg="orange", width=1000, height=100)
frame3.grid(row=1,column=0,columnspan=2)
frame3a = Frame(frame3)
frame3b = Frame(frame3)
frame3a.grid(row =0 ,column = 0)
frame3b.grid(row = 0, column = 1)
btn1 = Button(frame3a, text='Next', width = 10, command=next)
btn1.grid(padx=200, pady =40 )
btn2 = Button(frame3b, text='Previous', width = 10, command=prev)
btn2.grid(padx=00, pady =40 )
frame3.grid_propagate(False)
tk.mainloop()

提前致谢

4

1 回答 1

3

是的你可以。使用来自网格的更多行/列属性以及粘性属性。

阅读:http ://effbot.org/tkinterbook/grid.htm

我假设您希望您的窗口看起来像这样(原始 ascii 传入)

+------------+------------+
|            |            |
|  FRAME     |    FRAME   |
|------------+------------|
|        FRAME  |PREV|NEXT|
+-------------------------+

为此,我会使用pack而不是grid. 我制作了一个底部框架并将其设置为按钮的高度,然后将它们都打包好:如果您想在底部放置其他垃圾,您可以使用网格管理器将框架推开。Pack 仅在包含按钮的框架中处于活动状态,但您可以使用 gridmanager 来移动按钮框架。

from Tkinter import * 
tk = Tk() 
main_frame = Frame(tk) 
main_frame.grid(row=0) 
frame1 = Frame(main_frame, bg="orange", width=500, height=100)
frame2 = Frame(main_frame, bg="blue", width=500, height=100)
frame3 = Frame(main_frame, bg="green", width=1000, height=50)
frame1.grid(row=1,column=1)
frame2.grid(row=1,column=2) 
frame3.grid(row=2,column=1,columnspan=2)
frame3.pack_propagate(0) # Keeps bottom frame from resizing
btn1 = Button(frame3, text='Next', width = 10) 
btn1.pack(side='right')  # sticks on side
btn2 = Button(frame3, text='Previous', width = 10) 
btn2.pack(side='right')  # sticks on side
tk.mainloop()
于 2012-07-13T14:27:45.247 回答