如何在Python Tkinter wind中显示搜索结果

2024-06-17 13:58:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我不确定是否有人问过这个问题,但我环顾四周,没有发现任何具体的问题。我正在尝试建立一个应用程序,通过那里的ext(.txt,.mkv,.mp3)搜索所有目录和子目录中的特定文件。大多数情况下,这些扩展将被使用(如果重要的话)我希望程序在文本区域(排序的文本字段)中显示结果,以显示文件名和路径。

我有一个脚本,我正在与之合作,但我不确定这是否是最好的方式去做。所以我的问题是如何将现有脚本绑定到按钮小部件。我想?可能还有更多。又在学习。

如果有更简单的方法(步骤更少=代码更干净),请“向我展示代码”文档总是有帮助的,但“动手”方法对我最有效。我现在还在学习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()

这是完整的代码。别介意进度条的问题。


Tags: 代码textinfromimportforosmain
2条回答
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按钮时,你会在屏幕上看到范围(1100)内不同的六个数字。最好把你的结果放在一个列表中,然后把它们放在上面的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()

enter image description here

相关问题 更多 >