tkinter:按下按钮获得自己的网格

时间:2014-03-29 15:55:31

标签: python tkinter grid-layout

我正在尝试创建一列按钮,当按下这些按钮时,一行显示的网格会弹出另外两个按钮。

for i in tlist:
    opl.append(Tk.Button(self.frame, width = 12 , text=i[3],command = lambda:self.pressedop(i[2], a)))
    opl[a].grid(row=a, column=0, columnspan=2)
    a = a + 1

成功创建一列按钮,正确显示text(i[3]),但按下按钮时,i[2]将是最后一个按钮的信息,而最后一个按钮的行将为+1。

有没有办法可以通过i[2]并将其自己的grid_info传递下去?

1 个答案:

答案 0 :(得分:1)

我不明白您的问题,但您可以使用widget.grid_forget()从几何管理器中删除小部件。如果你想要它在另一行,只需要widget.grid()和新的行和列。一个简单的例子

try:
    import Tkinter as tk     ## Python 2.x
except ImportError:
    import tkinter as tk     ## Python 3.x

from functools import partial

opl = []
top = tk.Tk()

def move_it(num):
    for ctr in range(num, 5):
        opl[ctr].grid_forget()   
        opl[ctr].grid(row=6, column=ctr)

for but_num in range(5):
    opl.append(tk.Button(top, width = 12 , text=str(but_num),
               command = partial(move_it, but_num)))
    opl[-1].grid(row=but_num, column=0, columnspan=2)

top.mainloop()