python tkinter 列表框与其他 tk/ttk 小部件的性能

问题描述

我尽可能地找出问题所在。

假设有 3 个 tk/ttk 小部件。 为什么 tk_spinBox 不取消选择选定的列表框条目,为什么 ttk_spinBox 会取消选择? 每当按下 ttk_spinBox 时,我都不想取消选择这些项目。是否有解决方法可以让 ttk_spinBox 和 tk_spinBox 获得相同的行为?

代码如下:

import tkinter as tk
import tkinter.ttk as ttk

masterframe = tk.Tk()

listBox = tk.ListBox(masterframe,height=5,selectmode='multiple')
listBox.pack(padx=10,pady=10)
listBox.insert(tk.END,'blubb_1')
listBox.insert(tk.END,'blubb_2')

tk_spinBox = tk.SpinBox(masterframe,from_=10,to=20,increment=2)
tk_spinBox.pack(padx=10,pady=10)

ttk_spinBox = ttk.SpinBox(masterframe,increment=2)
ttk_spinBox.pack(padx=10,pady=10)

masterframe.mainloop()

解决方法

“为什么”很简单,这就是它们的设计方式。当您与 ttk spinbox 交互时,会自动选择 spinbox 值。这不会发生在 tk spinbox 上。默认情况下,一次只能选择一件事,因此当旋转框获得选择时,列表框将失去选择。

如果您不想让列表框失去选择,您可以将列表框和/或 ttk 旋转框上的 exportselection 选项设置为 False。