簡體   English   中英

Python 在搜索框中輸入名稱並在同名文件夾中查找文件

[英]Python input name in searchbox and find file in folder with same name

這里絕對是新手,我只是想制作一個簡單的代碼來掃描條形碼,然后當我點擊按鈕時,它會在特定文件夾中查找具有相同名稱的文件並打開該文件。

我到處尋找答案,但似乎不知道如何從輸入框中獲取值並將其與文件夾文件進行比較。

另外,如何在不輸入正確用戶名的情況下搜索文檔文件夾,以便它可以在任何帳戶上使用?

如果你們能指出我正確的方向,我會有點卡住,我將不勝感激。

到目前為止,您可以在這里看到我的代碼,盡管我不確定它是否正確。

import tkinter as tk
import os

# define print button function to open file
def sendprint():
os.startfile(r"C:\AutoPrint\test.txt")

# create window
window = tk.Tk()
window.geometry('300x200')
tk.Label(window, 
        text="Scan Bracode:").grid(row=0)
window.title('AutoPrint')

# create entrybox
entrybox = tk.Entry(window)
entrybox.grid(row=0, column=1)

# create button
tk.Button(window, 
         text='Print', 
         command=sendprint).grid(row=3, 
                                   column=0, 
                                   sticky=tk.W, 
                                   pady=4)

tk.mainloop()

從 Entry 中獲取文本

    word = entrybox.get()

稍后您可以使用不同的功能簽入文件夾

os.listdir(folder)

def sendprint():
    word = entrybox.get()

    folder = r'C:\AutoPrint'
    
    for filename in sorted(os.listdir(folder)):
        if word.lower() in filename.lower():
            fullpath = os.path.join(folder, filename)
            os.startfile(fullpath)

glob.glob()*

def sendprint():
    word = entrybox.get()

    folder = r'C:\AutoPrint'
        
    pattern = os.path.join(folder, f'*{word}*')
    print('pattern:', pattern)

    filenames = glob.glob(pattern)
    print('filenames:', filenames)
    
    #if filenames:
    #   os.startfile(filenames[0])

    for fullpath in filenames:
       os.startfile(fullpath)

@furas 感謝您的幫助和提示,我最近才開始,不太確定如何移動!

在按照您的說明進行操作后,我設法將代碼放在一起,並且運行良好,只有一件小事困擾着我,當輸入框中沒有條目時,它仍然會打開我認為它是文件夾中的第一個文件的文件。

我可以修改什么以使其正常工作?

import tkinter as tk
import tkinter.font as font
import os
import glob
import time
from pynput.keyboard import Key, Controller, Listener
import ctypes
import keyboard

ctypes.windll.shcore.SetProcessDpiAwareness(True)

keyboard = Controller()

# values for widgets coordinates
ref_x=0
ref_y=0

# set values for thickboxes
pro_only=1
pro_x2=2
w_only=3

# create window
##window=ThemedTk(themebg=True)
##window.set_theme('clam')
window = tk.Tk()
window.geometry('650x400')
window.configure(bg='#fdfdfd')
window.title('AutoPrint')
myFont = font.Font(family='Calibri', size=13)

# create entrybox with label
entrybox = tk.Entry(window, width=28)
entrybox.place(x=ref_x + 200, y=ref_y + 10)
entrybox['font'] = myFont
entrybox.focus()
boxlabel = tk.Label(window, text='Scan Barcode:', bg='#fdfdfd')
boxlabel.place(x=ref_x + 15, y=ref_y + 10)
boxlabel['font'] = myFont

# define search funtions
def sendprint():
    word = entrybox.get()
    folder = r'C:\AutoPrint'    
    pattern = os.path.join(folder, f'*{word}*')
    print('pattern:', pattern)
    filenames = glob.glob(pattern)
    print('filenames:', filenames)
    
    if filenames:
       os.startfile(filenames[0])
       time.sleep(3)
       keyboard.press(Key.enter)
       time.sleep(0.5)
       keyboard.release(Key.enter)
       print (filenames)
 
    else:
       print ('Not found')    

# create button
print_button = tk.Button(window, text='Print', command=sendprint, width=15, bg='#00a2ed', fg='white')
print_button.place(x=ref_x + 220, y=ref_y + 280)
print_button['font'] = myFont

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM