0

所以我一直在玩python 3.2 tkinter。今天刚刚发现单选按钮中的文字没有显示在按钮旁边,它只显示“0”。此外,当我在单选按钮语句的末尾有 .pack() 时,它显示错误“NoneType”对象没有属性“pack”。太奇怪了,是因为他们在新版本中发生了变化。我需要导入其他东西吗?谢谢

from tkinter import*

class Name:
    def __init__(self, master):
        frame = Frame(master)
        frame.pack()

        self._var = IntVar()
        self._fullRadio = Radiobutton(frame, text="yes", textvariable=self._var, value=1)
        self._fullRadio.grid(row=2, column=0)#.pack()

        self._partRadio = Radiobutton(frame, text="no", textvariable=self._var, value=2)
        self._partRadio.grid(row=3)#.pack()

        self._notRadio = Radiobutton(frame, text="not both", textvariable=self._var, value=3)
        self._notRadio.grid(row=4)#.pack()

root = Tk()
application = Name(root)
root.mainloop()
4

1 回答 1

2

您想要参数variable,而不是textvariable

from tkinter import*
class Name:
    def __init__(self, master):
        frame = Frame(master)
        frame.grid() # changed from frame.pack()

        self._var = IntVar()
        self._fullRadio = Radiobutton(frame, text="yes", variable=self._var, value=1)
        self._fullRadio.grid(row=2, column=0)

        self._partRadio = Radiobutton(frame, text="no", variable=self._var, value=2)
        self._partRadio.grid(row=3)

        self._notRadio = Radiobutton(frame, text="not both", variable=self._var, value=3)
        self._notRadio.grid(row=4)

root = Tk()
application = Name(root)
root.mainloop()

此外,根据经验,最好不要在同一帧中混合.grid()和。.pack()

至于你的第二个问题:.grid()是另一个布局管理器。只是做self._fullRadio.grid(row=2, column=0)已经设置了布局;你不需要使用.pack()除了.grid()(在同一个对象上)。

你得到一个NoneType对象没有方法的错误,.pack()因为self._fullRadio.grid(row=2, column=0)返回None(它是一个方法调用)。坚持使用gridpack,但不要同时使用两者。

于 2013-04-11T01:18:43.403 回答