如何拥有一个列出多个结果的屏幕,每个结果都是可点击的 link(在 Tkinter 上)
How to have a screen that lists multiple results, each of which is a clickable link (on Tkinter)
我是 GUI 的新手,
我做了一个基本的搜索引擎,可以找到包含特定单词的文档并将它们放入列表中。
现在,我希望这个路径列表显示在我的 GUI 上,一个在另一个下面(我猜是使用 \n
),所有这些都可以点击并自动为您打开正确的文档,例如:
os.startfile(path, 'open')
在当前版本中,我只显示一个结果(列表中的第一个),并且我是这样使用标签的:
my_label.config(text=path)
my_label.bind("<Button-1>", lambda e: os.startfile(path, 'open'))
我可以做更多的标签,但这样效率低下而且也不是动态的(例如我设想的会列出所有结果并且可以滚动)。
在此感谢任何帮助。
您可以使用一组 Label
和 bind
右键单击它,或者单个 Listbox
来显示您的路径和 bind
。
from tkinter import *
import os
root = Tk()
lst = [f'path {i}' for i in range(1,6)]
def select(e):
path = e.widget.get(*e.widget.curselection())
os.startfile(path,'open')
lstbox = Listbox(root)
lstbox.pack(padx=10,pady=10)
for i in lst:
lstbox.insert('end',i)
lstbox.bind('<<ListboxSelect>>',select) # Or lstbox.bind('<Double-1>',select) for double click
root.mainloop()
lst
应该替换为您需要的列表。另一种可行的方法是设置 Buttons
和 command
打开所需的路径。
我是 GUI 的新手, 我做了一个基本的搜索引擎,可以找到包含特定单词的文档并将它们放入列表中。
现在,我希望这个路径列表显示在我的 GUI 上,一个在另一个下面(我猜是使用 \n
),所有这些都可以点击并自动为您打开正确的文档,例如:
os.startfile(path, 'open')
在当前版本中,我只显示一个结果(列表中的第一个),并且我是这样使用标签的:
my_label.config(text=path)
my_label.bind("<Button-1>", lambda e: os.startfile(path, 'open'))
我可以做更多的标签,但这样效率低下而且也不是动态的(例如我设想的会列出所有结果并且可以滚动)。
在此感谢任何帮助。
您可以使用一组 Label
和 bind
右键单击它,或者单个 Listbox
来显示您的路径和 bind
。
from tkinter import *
import os
root = Tk()
lst = [f'path {i}' for i in range(1,6)]
def select(e):
path = e.widget.get(*e.widget.curselection())
os.startfile(path,'open')
lstbox = Listbox(root)
lstbox.pack(padx=10,pady=10)
for i in lst:
lstbox.insert('end',i)
lstbox.bind('<<ListboxSelect>>',select) # Or lstbox.bind('<Double-1>',select) for double click
root.mainloop()
lst
应该替换为您需要的列表。另一种可行的方法是设置 Buttons
和 command
打开所需的路径。