列表选择会在调用目录对话框时进行

问题描述 投票:0回答:1

我有测试代码:

package require Tk
package require tablelist

set ::tv {{N1 qwe} {N3 rty} {N4 uio}}
set ::dir [pwd]
tablelist::tablelist .tbl -columns {0 Name 0 Value} -listvariable ::tv
button .but -text "Directory..." -command {
    set sel1 [.tbl curselection]
    set sel2 [.tree selection]
    tk_messageBox -message ".tbl curselection = \"$sel1\"\n\n.tree curselection = \"$sel2\""
    set ::dir [tk_chooseDirectory -initialdir "$::dir"]
}
ttk::treeview .tree -columns Value
.tree heading "#0" -text "Name"
.tree heading "#1" -text "Value"
foreach t $::tv {
    lassign $t t1 t2
    .tree insert {} end -text $t1 -values $t2
}
.tbl selection set 0; #.tbl activate 0
.tree selection set I001
pack .tbl .tree .but -side left -anchor n -padx 9 -pady 9

首先按“目录”按钮,我看到“ tablelist curselection = 0”好。

但是在调用目录对话框时,表列表的选择消失了。树视图选择仍然存在,应保留。

我找不到如何使表列表不被选中的方法。

表格列表v6.8TIA

1 step2 step3 step

tcl tk
1个回答
0
投票

这种奇怪的行为是当几个小部件争夺PRIMARY selection时发生的事情,这是X11的功能,用于表示一次只选择一个小部件。 (它过去也经常用于选择和粘贴样式的文本操作,但这已不受欢迎,并且更跨平台的PRIMARY样式选择用于此类操作。)我不知道为什么在您的特定情况下而不是在其他情况下将其打开,但这可能与Debian的X属性中的默认设置有关;那不是很明显,但是可以用此CLIPBOARD列出。

shell command

Tk小部件默认情况下支持xrdb -query -all 选择(在X11上;在其他平台上这实际上没有意义),许多第三方和合成小部件也支持,但是可以通过设置标准布尔值[C0小部件上的]选项设置为任何假值。完成后,小部件将继续保留所选内容的概念,但不会将该概念导出到自身之外(除非您执行Ctrl + C或类似的操作)。

PRIMARY
© www.soinside.com 2019 - 2024. All rights reserved.