Python 3.3: tkinter.ttk combobox获取当前选择值时出错

0 投票
1 回答
1426 浏览
提问于 2025-04-18 01:33

我刚开始学Python,但在使用下拉框(combobox)时遇到了一些问题。

我查了很多论坛,但没有找到解决我在下拉框中遇到的错误的方法。我收到的错误信息是:

“menuItem1 = self.cmbBxMen1.get() AttributeError: 'NoneType' object has no attribute 'get'”

我设置了根窗口和框架,类名是Application,而导致错误的方法和调用以及放置控件的方法在同一个类里,但在不同的方法中。按钮的命令属性设置为使用Add_To_Menu方法,这个方法用来获取在下拉框中选择的值。代码如下:

def __init__(self, master):

    super(Application, self).__init__(master)
    self.grid()
    self.create_widgets()



def create_widgets(self):

    data = Application.data

    self.cmbBxMen1 = Combobox(self, values = data, width = 60).grid(row=0, column=1, padx = 4, pady = 20)
    self.btnAdMen = Button(self, text = "Add to Menu", command = self.Add_To_Menu).grid(row=0, column=9, pady = 20, sticky = W)

def Add_To_Menu(self):

    menuItem1 = self.cmbBxMen1.get()

有人能告诉我我哪里做错了吗,为什么会出现这个错误?

1 个回答

1

问题在于,widget.grid() 实际上在把这个小部件放到布局里后并没有返回这个小部件,而是返回了 None。你应该单独调用 .grid(),按钮也是一样。

self.cmbBxMen1 = Combobox(self, values = data, width = 60)
self.cmbBxMen1.grid(row=0, column=1, padx = 4, pady = 20)

撰写回答