如何更新Tix.ComboBox的文本?

2 投票
2 回答
2786 浏览
提问于 2025-04-11 09:23

我有一个可编辑的下拉框(Tix.ComboBox)。我想知道怎么才能让存储文本值的变量更新。

让我更具体地解释一下。我有一个下拉框和一个按钮。当我点击这个按钮时,会弹出一个消息框,显示下拉框的值。比如说,下拉框的文本框现在显示的是“thing1”。如果我在框里输入“new”,然后用鼠标点击按钮,弹出的消息框还是显示“thing1”。但如果我在框里输入“new”,然后按Tab键切换到其他地方,再点击按钮,弹出的消息框就会显示“new”。

我想知道怎么才能让下拉框的值更新为“new”,而不需要我先切换到其他地方。

我附上了示例代码。

import Tix
import tkMessageBox

class App(object):
    def __init__(self, window):
        window.winfo_toplevel().wm_title("test")
        self.window = window

        self.combo = Tix.ComboBox(window)
        self.combo.insert(Tix.END, 'thing1')
        self.combo.insert(Tix.END, 'thing2')
        self.combo.entry['state'] = "normal"
        self.combo['editable'] = True
        self.combo.pack()

        button = Tix.Button(window)
        button['text'] = "Go"
        button['command'] = self.go
        button.pack()

    def go(self):
        tkMessageBox.showinfo('info', self.combo['value'])


if __name__ == '__main__':
    root = Tix.Tk()
    App(root)
    root.mainloop()

2 个回答

1

注意:这是Moe的回答的复制,可以被选为最佳答案

太棒了!我自己解决了这个问题。

使用

self.combo['selection']

而不是

self.combo['value']
5

哇!我自己解决了这个问题。

使用

self.combo['selection']

而不是

self.combo['value']

撰写回答