使用widget.grid()时,Tkinter Radiobutton填充多行

时间:2015-02-06 02:08:26

标签: python tkinter grid row

我在将这些单选按钮与其他小部件一起网格化时遇到了一些麻烦。单选按钮从不进入指定的行,有时会放在多行的中间。

我正在尝试将单选按钮“One”和“Two”与按钮“Quit1”和“Quit2”对齐。

from Tkinter import *

class myFrame(Frame):

    def __init__(self, parent):
        self.parent = parent
        Frame.__init__(self, parent)
        self.initUI()

    def initUI(self):
        self.grid()
        v = IntVar()

        r1 = Radiobutton(self.parent, text="One", variable=v, value=1)
        r2 = Radiobutton(self.parent, text="Two", variable=v, value=2)
        quit1 = Button(self, text = "quit1", command = self.master.destroy)
        quit2 = Button(self, text = "quit2", command = self.master.destroy)
        quit3 = Button(self, text = "quit3", command = self.master.destroy)

        quit1.grid(row=0, column=0)
        quit2.grid(row=1, column=0)
        quit3.grid(row=2, column=0)
        r1.grid(row=0, column=1)
        r2.grid(row=1, column=1)

def main():
    root = Tk()
    root.geometry("250x150+300+300")
    app = myFrame(root)
    root.mainloop()  

if __name__ == '__main__':
    main()  

1 个答案:

答案 0 :(得分:2)

问题是 Radiobuttons 的父窗口小部件与按钮的父窗口小部件不同。

只需更改以下两行:

r1 = Radiobutton(self.parent, text="One", variable=v, value=1)
r2 = Radiobutton(self.parent, text="Two", variable=v, value=2)

要:

r1 = Radiobutton(self, text="One", variable=v, value=1)
r2 = Radiobutton(self, text="Two", variable=v, value=2)

请记住,小部件足够伸展,为自己腾出空间,就是这样。