我所有的单选按钮都是用Python';斯特金特酒店

我所有的单选按钮都是用Python';斯特金特酒店,python,tkinter,Python,Tkinter,我正在尝试制作一个简单的比萨饼订购GUI,但是当我加载比萨饼尺寸的单选按钮时,所有的按钮都会同时被选中 编辑:修复后,启动时按钮不再全部选中。现在,它们在启动时都不会被选中,但当您将鼠标悬停在按钮上时,它们会自行选择,并且可以选择多个选项 以下是迄今为止的代码: from tkinter import * class Pizza(Frame): """Initialize the Pizza program""" def __init__(self, master):

我正在尝试制作一个简单的比萨饼订购GUI,但是当我加载比萨饼尺寸的单选按钮时,所有的按钮都会同时被选中

编辑:修复后,启动时按钮不再全部选中。现在,它们在启动时都不会被选中,但当您将鼠标悬停在按钮上时,它们会自行选择,并且可以选择多个选项

以下是迄今为止的代码:

from tkinter import *

class Pizza(Frame):
    """Initialize the Pizza program"""

    def __init__(self, master):
        """This sets up the Pizza program"""
        super(Pizza, self).__init__(master)
        self.grid()  # This is absolutely vital for future GUI projects!
        self.create_widgets()
        self.name = ""
        self.size = StringVar()
        self.size.set(value="small")

    def create_widgets(self):
        """This creates the input types"""
        # Adds text field for username entry

        # Not important for the question.

        # Adds Radiobuttons for users to interact with
        self.size_label = Label(self, text="Size:")
        self.size_label.grid(row=1, column=0)

        self.size_sml = Radiobutton(self, variable=self.size, value="small", text="Small")
        self.size_sml.grid(row=1, column=1)

        self.size_med = Radiobutton(self, variable=self.size, value="medium", text="Medium")
        self.size_med.grid(row=1, column=2)

        self.size_lrg = Radiobutton(self, variable=self.size, value="large", text="Large")
        self.size_lrg.grid(row=1, column=3)


root = Tk()
root.title("Order Pizza")
root.resizable(width=False, height=False)
app = Pizza(root)

root.mainloop()

我不确定是什么问题。代码的这一部分似乎很好。
话虽如此,我还是建议您在存储人们订购的尺码时,最好使用数字,例如小=0中=1大=2。然后,您可以在代码中稍后替换它,因为现在它有点不寻常。

命令
属性中给出的函数调用不应包含括号
()

这是因为当使用括号提及函数时,在调用
create\u widgets
函数时会调用该函数


您应将其更改为
self.size\u sml=Radiobutton(self,command=self.small,text=“small”)

“所有按钮都将同时被选择。”:您不使用
变量=
,因此,它是
None
阅读如何使用。我一遍又一遍地阅读它,但我不能真正理解它来帮助解决我遇到的新问题。你的错误是,在调用
之后定义
self.size=StringVar()
。创建小部件()
不幸的是,您选择了名称
self.size
,这是一个默认的小部件属性。因此,您不会收到错误消息,但
Radiobutton
对象的行为异常。解决方案:在调用
def create\u widgets
之前,不要在继承的对象中使用名称
self.size
,并定义
StringVar()
对象。新手犯了错误,我知道这会把事情搞得一团糟。谢谢你的帮助。现在可以了!虽然这可能是一个很好的建议,但它并不能解决人们提出的问题。