如何更新 Tix.ComboBox 的文本?

发布于 2024-07-05 01:29:17 字数 1018 浏览 7 评论 0原文

我有一个带有可编辑文本字段的 Tix.ComboBox。 如何强制更新保存文本值的变量?

让我给出更具体的解释。 我有一个组合框和一个按钮。 当我单击该按钮时,它会弹出一个消息框,其中包含组合框的值。 假设组合框文本字段当前的值为“thing1”。 如果我在框中输入“new”,然后用鼠标单击按钮,则会弹出消息“thing1”。 如果我在框中键入“新”,然后将焦点从组合框移开,然后单击按钮,弹出消息将显示“新”。

如何强制组合框将其值更新为新值,而不需要我按 Tab 键离开组合框?

我已经包含了示例代码。

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()

I have a Tix.ComboBox with an editable text field. How do I force the variable holding the value for the text to update?

Let me give a more concrete explanation. I have a combo box and a button. When I click the button, it pops up a message box with the value of the combo box. Let's say the combo box text field currently has the value "thing1". If I type "new" into the box and then click on the button with my mouse, it will pops up the message "thing1". If I type "new" in the box and then tab focus away from the combo box and then click the button the pop up message says "new".

Ho do I force the combo box to update it's value to new without requiring that I tab away from the combo box?

I have included sample code.

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()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

森林很绿却致人迷途 2024-07-12 01:29:17

注意:可以选择 Moe 答案的副本作为所选答案

哇!
我自己解决了。

使用

self.combo['selection']

而不是

self.combo['value']

NOTE: copy of Moe's answer that can be selected as chosen answer

woo!
solved it on my own.

Use

self.combo['selection']

instead of

self.combo['value']
梦亿 2024-07-12 01:29:17

哇!
我自己解决了。

使用

self.combo['selection']

而不是

self.combo['value']

woo!
solved it on my own.

Use

self.combo['selection']

instead of

self.combo['value']
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文