我不确定是否已经问过这个问题,但我环顾四周并没有发现任何与我的问题有关的问题。我正在尝试构建一个应用程序,通过ext(.txt,.mkv,.mp3)搜索特定文件的所有目录和子目录,大多数这些扩展将被使用(如果它很重要)我希望程序显示在文本区域(排序的文本字段)中显示文件名和路径的结果。
我有一个我正在使用的脚本,但我不确定这是否是最好的方法。所以我的问题是如何将现有脚本绑定到按钮小部件。我认为?还有更多。再次学习。
如果有更简单的方法(更少的步骤=更清洁的代码),请#34;告诉我代码"文档总是很有帮助,但是"实际操作"方法最适合我。我现在还在学习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()
这是完整的代码。不要介意进度条问题。
答案 0 :(得分:0)
labl = Label(text="{}".format(Result goes here))
labl.pack()
您可以像这样显示结果。检查pack()
参数以设计标签。我们在这里做的很简单,text
函数的Label
参数正在使用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()
示例中。
答案 1 :(得分:0)
我修改了您的示例,以便在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()