我如何在 Python Tkinter window 中显示搜索结果
how do i display search results in Python Tkinter window
我不确定是否有人问过这个问题,但我环顾四周,没有发现任何与我的问题相关的问题。我正在尝试构建一个应用程序以通过 ext(.txt, .mkv, .mp3) 搜索特定文件的所有目录和子目录,大多数情况下将使用这些扩展名(如果重要的话)我希望程序显示文本区域(排序文本字段)中的结果显示文件名和路径。
我有一个正在使用的脚本,但我不确定这是否是最好的方法。所以我的问题是如何将现有脚本绑定到按钮小部件。我认为?可能还有更多。再次学习。
如果有更简单的方法(更少的步骤 = 更清晰的代码)请 "show me the code" 文档总是有帮助的,但 "hands on" 方法最适合我。我现在还在学习 Python 和 Tkinter。这不是完整的代码。我已经删除了所有对我不起作用的东西,所以非常不完整。
from tkinter import *
from tkinter import ttk
import os
Root = Tk()
def help!
for dirname, dirnames, filenames in os.walk('/'):
for i in glob.glob(dirname+'/'+search+'*')
print (i)
This part writen for python 2.7 now being writen in 3.x
entry = ttk.Entry(root, text = 'Enter file name')
entry.pack()
button = ttk.Button(root, text = 'Search')
button.pack()
# Text field of sort goes here!
提前致谢
更新:
完整的代码。
Python 3x(应该是)
from tkinter import *
from tkinter import ttk
from sys import argv
import glob
import os
search_input = argv
#code in question
def find_files():
for dirname, dirnames, filenames in os.walk('/home'):
for i in glob.glob('/*'+searchinput):
listbox.insert(END, search_input)
#Code in question
main = Tk()
main.title("FSX")
main.geometry('640x480')
frame1 = ttk.Frame(main, height=200, width=400)
frame1.pack()
entry = Entry(frame1, width=30)
entry.pack()
button1 = ttk.Button(frame1, text="Search", command=find_files)
button1.pack()
button1.bind ('<ButtonPress>', lambda e: progressbar.start())
button2 = ttk.Button(frame1, text="Quit")
button2.pack()
button2.bind ('<ButtonPress>', lambda e: exit())
progressbar = ttk.Progressbar(frame1, orient = HORIZONTAL, length = 200, mode = 'indeterminate')
progressbar.pack()
#progressbar.start()
frame2 = ttk.Frame(main, height=200, width=400)
frame2.pack()
listbox = Listbox(frame2, height=200, width=400)
listbox.pack(fill=BOTH, expand=YES)
progressbar.stop()
main.mainloop()
这是完整的代码。不要介意进度条问题。
labl = Label(text="{}".format(Result goes here))
labl.pack()
您可以像这样显示您的结果。检查 pack()
参数以设计您的标签。我们在这里做的很简单,Label
函数的text
参数是用format()
函数获取特定数据。
如果你的结果来自一个函数,那么你必须把它放在你的函数中。例如;
def fnk():
a=range(1,100)
lst1=[]
for t in range(6):
while len(lst1)<6:
x=random.choice(a)
if str(x) not in lst1:
lst1.append(str(x))
labl = Label(text="{}".format(" ".join(lst1)), fg="red",font="Times 35 bold")
labl.pack()
bttn = Button(text="Start", command = fnk)
bttn.pack(side=LEFT)
像这样的程序,每当您单击 Start
按钮时,您都会在屏幕上看到范围 (1,100) 中的六个不同数字。最好将结果放在列表中,然后将它们放在上面的 format()
示例中。
我修改了您的示例以在 listbox 中显示找到的文件。在此示例中,我使用 /tmp 文件夹中的日志文件。找到的文件保存在found_files
列表中,然后显示在列表框中。
from tkinter import *
from tkinter import ttk
import glob
import os
search = '*log'
found_files = []
for dirname, dirnames, filenames in os.walk('/tmp'):
for i in glob.glob(dirname+'/'+search+'*'):
print(i)
found_files.append(i)
root = Tk()
root.geometry( "640x480" );
listbox = Listbox(root)
for a_file in found_files:
listbox.insert(END, a_file)
listbox.pack(fill=BOTH, expand=YES)
root.mainloop()
我不确定是否有人问过这个问题,但我环顾四周,没有发现任何与我的问题相关的问题。我正在尝试构建一个应用程序以通过 ext(.txt, .mkv, .mp3) 搜索特定文件的所有目录和子目录,大多数情况下将使用这些扩展名(如果重要的话)我希望程序显示文本区域(排序文本字段)中的结果显示文件名和路径。
我有一个正在使用的脚本,但我不确定这是否是最好的方法。所以我的问题是如何将现有脚本绑定到按钮小部件。我认为?可能还有更多。再次学习。
如果有更简单的方法(更少的步骤 = 更清晰的代码)请 "show me the code" 文档总是有帮助的,但 "hands on" 方法最适合我。我现在还在学习 Python 和 Tkinter。这不是完整的代码。我已经删除了所有对我不起作用的东西,所以非常不完整。
from tkinter import *
from tkinter import ttk
import os
Root = Tk()
def help!
for dirname, dirnames, filenames in os.walk('/'):
for i in glob.glob(dirname+'/'+search+'*')
print (i)
This part writen for python 2.7 now being writen in 3.x
entry = ttk.Entry(root, text = 'Enter file name')
entry.pack()
button = ttk.Button(root, text = 'Search')
button.pack()
# Text field of sort goes here!
提前致谢
更新: 完整的代码。 Python 3x(应该是)
from tkinter import *
from tkinter import ttk
from sys import argv
import glob
import os
search_input = argv
#code in question
def find_files():
for dirname, dirnames, filenames in os.walk('/home'):
for i in glob.glob('/*'+searchinput):
listbox.insert(END, search_input)
#Code in question
main = Tk()
main.title("FSX")
main.geometry('640x480')
frame1 = ttk.Frame(main, height=200, width=400)
frame1.pack()
entry = Entry(frame1, width=30)
entry.pack()
button1 = ttk.Button(frame1, text="Search", command=find_files)
button1.pack()
button1.bind ('<ButtonPress>', lambda e: progressbar.start())
button2 = ttk.Button(frame1, text="Quit")
button2.pack()
button2.bind ('<ButtonPress>', lambda e: exit())
progressbar = ttk.Progressbar(frame1, orient = HORIZONTAL, length = 200, mode = 'indeterminate')
progressbar.pack()
#progressbar.start()
frame2 = ttk.Frame(main, height=200, width=400)
frame2.pack()
listbox = Listbox(frame2, height=200, width=400)
listbox.pack(fill=BOTH, expand=YES)
progressbar.stop()
main.mainloop()
这是完整的代码。不要介意进度条问题。
labl = Label(text="{}".format(Result goes here))
labl.pack()
您可以像这样显示您的结果。检查 pack()
参数以设计您的标签。我们在这里做的很简单,Label
函数的text
参数是用format()
函数获取特定数据。
如果你的结果来自一个函数,那么你必须把它放在你的函数中。例如;
def fnk():
a=range(1,100)
lst1=[]
for t in range(6):
while len(lst1)<6:
x=random.choice(a)
if str(x) not in lst1:
lst1.append(str(x))
labl = Label(text="{}".format(" ".join(lst1)), fg="red",font="Times 35 bold")
labl.pack()
bttn = Button(text="Start", command = fnk)
bttn.pack(side=LEFT)
像这样的程序,每当您单击 Start
按钮时,您都会在屏幕上看到范围 (1,100) 中的六个不同数字。最好将结果放在列表中,然后将它们放在上面的 format()
示例中。
我修改了您的示例以在 listbox 中显示找到的文件。在此示例中,我使用 /tmp 文件夹中的日志文件。找到的文件保存在found_files
列表中,然后显示在列表框中。
from tkinter import *
from tkinter import ttk
import glob
import os
search = '*log'
found_files = []
for dirname, dirnames, filenames in os.walk('/tmp'):
for i in glob.glob(dirname+'/'+search+'*'):
print(i)
found_files.append(i)
root = Tk()
root.geometry( "640x480" );
listbox = Listbox(root)
for a_file in found_files:
listbox.insert(END, a_file)
listbox.pack(fill=BOTH, expand=YES)
root.mainloop()