为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Python Tkinter中绑定ComboBox的ListBox

如何在Python Tkinter中绑定ComboBox的ListBox

莫回无 2023-12-26 15:00:12
我希望进行一个绑定,允许我根据用户按下的键放置某个值。这是我执行此操作的示例代码:from tkinter import *from tkinter import ttkv=Tk()combo = ttk.Combobox(values=['item1','item2','item3','item4'], state='readonly')combo.current(0)combo.pack()def function(Event):    if(Event.char in '1234'):        combo.set(f'item{Event.char}')combo.bind('<Key>', function)v.mainloop()他们会告诉我“如果这有效,你问这个做什么?” 事实证明,如果部署了组合框,绑定就会停止工作。问题如何解决?我知道这部分问题不应该问,因为它与所讨论的问题无关。但我想问一下,如果这个问题有问题,或者拼写错误,或者其他什么,请告知。“如何提出一个好问题”的页面对我没有帮助,因为从我的角度来看,我按照他们所说的去做一切。我尽力使此处所写的内容尽可能详细且易于理解。希望您的理解,谢谢。
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞


from tkinter import *

from tkinter import ttk


v=Tk()


# I create two test combobox

for _ in range(2):

    combo = ttk.Combobox(values=['item1','item2','item3','item4'], state='readonly')

    combo.current(0)

    combo.pack()


# I create a test entry to test if the function correctly recognizes when it should be executed

entrada = Entry()

entrada.pack()


def function(Event):

    """

    If Event.widget is a str and ends with ".popdown.f.l" I consider it to be the Listbox,

    I get the path of the Combobox it belongs to and convert it to a widget.

    Afterwards, I set the value of Event.widget to that of the supposed combobox.

    """

    if(isinstance(Event.widget, str) and Event.widget.endswith(".popdown.f.l")):

        Event.widget = v._nametowidget(Event.widget[:-len(".popdown.f.l")])


        

    # If Event.widget is not a Combobox, it stops the execution of the function.

    if(not isinstance(Event.widget, ttk.Combobox)):

        return


    if(Event.char in '1234'):

        Event.widget.set(f'item{Event.char}')


v.bind_all('<Key>', function)

v.mainloop()


查看完整回答
反对 回复 2023-12-26
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信