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

Tkinter Radiobutton fills multiple rows when using widget.grid()

我在将这些单选按钮与其他小部件正确网格化时遇到了一些问题。单选按钮永远不会进入指定的行,有时会放置在几行的中间。

我正在尝试使单选按钮 "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()  

问题是您的 Radiobuttons 的父控件与 Buttons 的父控件不同。

只需更改以下两行:

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)

还请记住,小部件的伸展足以让他们自己 space,仅此而已。