我从这个链接得到了将函数绑定到Listbox的想法: 在 Tkinter 列表框选择更改时获取回调?

仅使用一个Listbox可以很好地工作。 一旦我尝试在页面上引入第二个Listbox并将其绑定到第二个函数,我想象的功能就消失了。

显然,在第一个列表中的一个项目已被选中时选择第二个列表中的一个项目将从列表一中删除该选择。 任何人都可以帮助我解决这种行为吗?

这是我的示例代码:

import tkinter as tk

window = tk.Tk()
#generic window size, showing listbox is smaller than window
window.geometry("600x480")

frame = tk.Frame(window)
frame.pack()

def select(evt):
    event = evt.widget
    output = []
    selection = event.curselection()
    #.curselection() returns a list of the indexes selected
    #need to loop over the list of indexes with .get()
    for i in selection:
        o = listBox.get(i)
        output.append(o)
    print(output)

def select2(evt):
    event = evt.widget
    output = []
    selection = event.curselection()
    #.curselection() returns a list of the indexes selected
    #need to loop over the list of indexes with .get()
    for i in selection:
        o = listBox.get(i)
        output.append(o)
    print(output)

listBox = tk.Listbox(frame, width=20, height = 5, selectmode='multiple')

listBox.bind('<<ListboxSelect>>',select)
listBox.pack(side="left", fill="y")
scrollbar = tk.Scrollbar(frame, orient="vertical")
scrollbar.config(command=listBox.yview)
scrollbar.pack(side="right", fill="y")
listBox.config(yscrollcommand=scrollbar.set)

for x in range(100):
    listBox.insert('end', str(x))


listBox2 = tk.Listbox(frame, width=20, height = 5, selectmode='multiple')

listBox2.bind('<<ListboxSelect>>',select2)
listBox2.pack(side="left", fill="y")
scrollbar2 = tk.Scrollbar(frame, orient="vertical")
scrollbar2.config(command=listBox.yview)
scrollbar2.pack(side="right", fill="y")
listBox2.config(yscrollcommand=scrollbar.set)

for x in range(100):
    listBox2.insert('end', str(x))



window.mainloop()

#1楼 票数:1 已采纳

您只需要在创建列表框tk.Listbox(frame,...)时添加参数exportselection=False 然后您的列表框将继续被选中。

listBox = tk.Listbox(frame, width=20, height = 5, selectmode='multiple', exportselection=False)

listBox2 = tk.Listbox(frame, width=20, height = 5, selectmode='multiple', exportselection=False)

  ask by mgruber translate from so

未解决问题?本站智能推荐:

1回复

使某些Tkinter列表框项目始终处于选中状态

我有一个tkinter列表框,其中的列表框中的某些项目需要始终处于选中状态。 在我的应用程序中,用户需要这些项目,而列表框中的其他一些项目是可选的(应该是可选/取消选择)。 大多数示例使用'<<ListboxSelect>>'绑定函数。 我不明白的是,如何获
1回复

Python tkinter 列表框绑定仅适用于第二次点击

如果有其他讨论已经解决了这个问题,我很抱歉,但我找不到任何东西。 我是 Python 的新手(就此而言,除了 90 年代的一点点 Pascal 之外的编程)。 我正在构建一个带有 tk 输入框的 GUI,供用户输入值,然后将其存储在 sqlite 数据库中。 我希望用户能够单击列表框中某个字段中的
1回复

Tkinter-按键绑定无法正常工作

当我选择“输入”字段中未显示的内容时,必须再次按向上/向下键才能工作。 中间元素也一样-如果选择,则必须再次按Up或Down才能出现(但现在,列表中选择的内容与输入字段不同)。 您必须按两次以使一个值出现在输入字段中。
1回复

使用 tkinter 列表框更改实例的属性

我是新来的,我是 tkinter 的初学者。 我想从类中更改特定实例的属性。 要选择实例,我想使用列表框。 这是用于创建列表框的代码的简单版本。 是否可以更改所选实例的标志属性(如果点击了苹果,请将 apple.flag 更改为 1)? 谢谢!
3回复

Tkinter 和绑定到 ListboxSelect 事件的两个列表框的意外行为

我在我正在处理的脚本中遇到了一个不寻常的问题。 该程序是用 Python3/Tkinter 编写的。 它初始化两个列表框,包装在两个单独的框架中,并根据用户的命令显示一个或另一个。 当用户选择第一个 Listbox 中的一个项目,然后决定更改屏幕并选择第二个框架中的一个项目时,就会出现异常。 我已
2回复

将多个键绑定到 Tkinter Python 中的函数

假设我想将我的空格键和键“w”绑定到我的代码中的任何随机函数,我该怎么做? 我应该使用 if "w" 和 if "" then perform 还是你可以将多个键绑定到一个功能?
1回复

Tkinter:绑定功能问题

我有一个在画布上使用python的turtle模块的项目,并且我试图将<Return>键绑定到执行我执行的自定义命令的函数。 这是一个例子: 但是当我运行它并点击moveForward(15) ,它说:
1回复

Python Tkinter-多个列表框和滚动条

在正确设置滚动条时遇到问题。 以下代码呈现2个列表框,一个在另一个列表框的顶部,以及2个滚动条。 但是,滚动条跨越了两个框的整个高度,scrollbar2只是第二个列表框(lb2)。 我需要scrollbar和lb为相同的高度,scrollbar2和lb2为相同的高度。 这是我目前拥有的