Я сделал графический интерфейс с Tkinter и связал скрипт с кнопкой.Я также создал опцию просмотра файлов в моем графическом интерфейсе, и когда я выбираю файл, я сохраняю его путь в переменную с именем «file».То, что я пытаюсь сделать, - это нажать кнопку и запустить скрипт, используя путь, который я сохранил в переменной «file», но я получаю сообщение об ошибке «нет такого файла или каталога».Решение должно быть довольно очевидным, но я просто не могу понять это.Вот мой код GUI:
from tkinter import *
from tkinter import filedialog
from tkinter import ttk
from tkinter import messagebox
import subprocess
window = Tk()
#modify window
window.title("Random Title")
window.geometry("600x400")
tab_control = ttk.Notebook(window)
#Creating tabs
tab1 = ttk.Frame(tab_control)
tab2 = ttk.Frame(tab_control)
#Modifying tabs
tab_control.add(tab1, text='Issue')
tab_control.add(tab2, text='Verify')
file = ""
var = StringVar()
var.set("")
w = Entry(tab2,textvariable=var)
w.grid(column=1,row=0)
#Creating button & actions
def issue():
subprocess.call('./issue_script.sh', shell=True)
messagebox.showinfo('Issue Certificate', 'Certificate issued successfully!')
btn = Button(tab1, text="Issue Certificate", command=issue)
btn.grid(column=1, row=5)
def browse():
file = filedialog.askopenfilename(filetypes = (("all files","*.*"),("Text files","*.txt")))
var.set(file)
print(file)
btn2 = Button(tab2, text="Browse", command=browse)
btn2.grid(column=3, row=0)
def verify():
subprocess.call(['./verify_script.sh', file], shell=True)
btn = Button(tab2, text="Verify Certificate", command=verify)
btn.grid(column=1, row=5)
tab_control.pack(expand=1, fill='both')
#event loop
window.mainloop()
Я также добавил команду print(file)
, чтобы посмотреть, что хранится в переменной, и получить правильный результат (выбранный путь).Возможно, ошибка в строке, которую я называю скриптом subprocess.call(['./verify_script.sh', file], shell=True)
, или в самом скрипте.Вот код скрипта:
#!/bin/bash
echo "Verifying certificate..."
cd
python3 cert-issuer/cert-verifier/cert_verifier/verifier.py $1