在 .NET 中,有 ListView 控件,它显示带有可点击列标题的多列项目列表,可用于按列按升序或降序对列表进行排序。我需要一个具有完全相同行为的可滚动 Tkinter 小部件,但标准 Tkinter 模块中似乎没有任何具有类似功能的东西。这似乎是一个奇怪的疏忽。有没有像这样的小部件的模块?最需要跨平台解决方案,但最重要的是小部件在 Windows(XP 和 7)上运行良好。
是否有一个参考站点包含每个 Tkinter 小部件的所有可用绑定序列的列表?
例如,我可以使用以下代码将回调绑定到 TreeView:
tree.bind("<<TreeviewSelect>>", selection_changed)
Run Code Online (Sandbox Code Playgroud)
但是,我似乎找不到一个很好的资源来列出可以分配回调的所有可能事件。
我正在尝试在小部件中显示二进制信息(即文本、条目、标签)。单个字符,在这种情况下,只有“0”或“1”应该是可点击的,以便它们在 0 和 1 之间切换。
我不太确定要使用哪个小部件以及如何将鼠标事件绑定到单个字符。
我希望有人能指出我正确的方向,因为我对 TK 方面还很陌生。
我在应用程序中有这些绑定:
bind $::app <Control_L><o> {FileOpen}
bind $::app <Control_L><O> {FileOpen}
Run Code Online (Sandbox Code Playgroud)
FileOpen 是一个过程。
我在文本小部件中按 Ctrl+o 并且 FileOpen 启动正常,但首先在插入点处将换行符插入到文本小部件中。
我知道 Ctrl+o 是在文本小部件中插入换行符的默认绑定,但我的绑定不应该覆盖它吗?
我还尝试了以下方法:
bind $::app <Control_L><o> {}
bind $::app <Control_L><O> {}
bind $::app.text <Control_L><o> {}
bind $::app.text <Control_L><O> {}
bind $::app <Control_L><o> {FileOpen}
bind $::app <Control_L><O> {FileOpen}
Run Code Online (Sandbox Code Playgroud)
还是没有成功。到底是怎么回事?
Ubuntu 上的 Tcl/Tk 8.5.10。
下面给出的是使用Tkinter和Python创建独立窗口的代码:
import Tkinter
Tkinter.NoDefaultRoot()
win1=Tkinter.Tk()
win2=Tkinter.Tk()
Tkinter.Button(win1, text='Woho!',command=win1.destroy()).pack()
Tkinter.Button(win2, text='Woho!',command=win2.destroy()).pack()
win1.mainloop()
Run Code Online (Sandbox Code Playgroud)
执行时显示:
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\eclipse\Python Projects\Project 1\Source1\mod.py", line 8, in <module>
Tkinter.Button(win1, text='Woho!',command=win1.destroy()).pack()
File "C:\Python27\lib\lib-tk\Tkinter.py", line 2106, in __init__
Widget.__init__(self, master, 'button', cnf, kw)
File "C:\Python27\lib\lib-tk\Tkinter.py", line 2036, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: can't invoke "button" command: application has been destroyed
Run Code Online (Sandbox Code Playgroud)
我是Python的新手,因此无法理解它的含义。我要去哪里错了?
我下载了Wordnet-3.0,因为它说必须已经安装了tcl和tk.所以我用以下方法检查了这个:
vidyasagar@vidyasagar-ThinkPad-Edge-E431:~/Documents/NLP/WordNet-3.0$ dpkg -s tcl
Package: tcl
Status: install ok installed
Priority: optional
Section: interpreters
Installed-Size: 51
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Multi-Arch: foreign
Source: tcltk-defaults
Version: 8.6.0+6ubuntu3
Provides: tclsh
Depends: tcl8.6 (>= 8.6.0-2)
Breaks: tcl8.3 (<< 8.3.5-15), tcl8.4 (<< 8.4.20-2), tcl8.5 (<< 8.5.14-3), tcl8.6 8.6.0-2)
Conflicts: tcl-lib, tcl8.5-lib
Description: Tool Command Language (default version) - shell
Tcl is a powerful, easy to use, embeddable, cross-platform interpreted
scripting language.
This package is a dependency package, which depends on Debian's …Run Code Online (Sandbox Code Playgroud) 当我在彩色背景上放置一个按钮时,TKinter 会在小部件周围留下这个奇怪的白色框。例如下面的代码:
from Tkinter import *
root = Tk()
root.geometry("300x100+300+300")
root.configure(bg="red")
button = Button(root, text="Connect", highlightthickness=0)
button.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能摆脱白色间距?
我想在控制台中显示我在 Tk 窗口中按下的内容。
我写了以下代码:
require 'tk'
root = TkRoot.new
entry = TkEntry.new(root) do
pack
end
entry.bind("Key", proc {p "key pressed"})
Tk.mainloop
Run Code Online (Sandbox Code Playgroud)
key pressed如果我按任意键,它会显示。
但我想显示我按下的键,而不是一个常量字符串。谁能帮我?
尽管Tkinter是从Tcl / Tk衍生而来的,但它不如Tcl / Tk完整。Tcl / Tk绑定函数具有tkinter不具备的一些属性(例如,%d返回事件https://www.tcl.tk/man/tcl8.4/TkCmd/bind.htm#M24的详细信息字段)。
Tcl / Tk脚本可由python中的“ eval”函数使用,但我不知道如何在Tcl / Tk脚本中声明tkinter小部件。
所以我如何在Tkinter小部件上使用此功能及其属性?
有没有办法从事件中提取画布对象的 id?
例如,我想将一个项目添加到画布,并绑定到它——但如果我的画布上有多个项目,我需要区分它们。
def add_canvas_item(self,x,y):
canvas_item_id = self.canvas.create_oval(x-50,y-50,x+50,y+50, fill='green')
self.canvas.tag_bind(canvas_item_id ,"<ButtonPress-1>",self.stateClicked)
def itemClicked(self,event):
print("Item XYZ Clicked!") <- Where XYZ is the ID of the item
Run Code Online (Sandbox Code Playgroud)
我有一些非常“hacky”的方法来解决这个问题(跟踪鼠标,并询问画布距离该点最近的项目)但这似乎不是“最佳”方法。
有没有更好的办法?
tk-toolkit ×10
tkinter ×6
python ×5
tcl ×4
bind ×2
python-2.7 ×2
install ×1
python-3.x ×1
ruby ×1
ubuntu-14.04 ×1
widget ×1
wordnet ×1