Dmustache
@Dmustache
Python, Cpp, SQL

Как сделать кнопку проверки пути к файлу?

Как сделать так, чтобы программа по одной кнопке получала путь к файлу, а по второй открывала этот файл?
Вот то, что у меня есть:
from tkinter import *
from tkinter import filedialog
import os

pat = ''
def takeCSV():
    global pat
    fileName = filedialog.askopenfilename(filetypes = (("CSV Files","*.csv"),))
    root.title(f'file at {pat}')
    pat = fileName
    print(pat)
    return fileName

def runCheck(f):
    global pat
    if pat != '':
        os.system(f'start {f}')

root = Tk()

root.update_idletasks()
s = root.geometry()
s = s.split('+')
s = s[0].split('x')
width_root = int(s[0])
height_root = int(s[1])

w = ((root.winfo_screenwidth() // 2) - width_root // 2)
h = ((root.winfo_screenheight() // 2) - height_root // 2)
root.geometry('300x250+{}+{}'.format(w, h))

bOpen = Button(text='open', command=takeCSV)
bOpen.pack(side=BOTTOM)
bCheck = Button(text='check', command=runCheck(pat))
bCheck.pack(side=BOTTOM)

root.mainloop()
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
@o5a
Если уже используется глобальная pat то ее и нужно вызывать в rucheck (а параметр вообще убрать).
def takeCSV():
    global pat
    pat = filedialog.askopenfilename(filetypes = (("CSV Files","*.csv"),))
    root.title(f'file at {pat}')

def runCheck():
    global pat
    if pat != '':
        os.system(f'start {pat}')
....
# и убрать параметр pat
bCheck = Button(text='check', command=runCheck)


Или можно вообще отказаться от глобальных и писать как атрибуты root
def takeCSV():
    root.filename = filedialog.askopenfilename(filetypes = (("CSV Files","*.csv"),))
    root.title(f'file at {root.filename}')

def runCheck():
    if root.filename:
        os.system(f'start {root.filename}')
....
# и тоже убрать параметр pat
bCheck = Button(text='check', command=runCheck)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
В программе надо сделать две функции, одна получает путь к файлу и возвращает его в переменную; вторая функция открывает этот файл (кстати, открыла, и че? ну, это другой вопрос). Сделать две кнопки, повесить на каждую по функции. Всё...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
07 мар. 2021, в 18:25
35000 руб./за проект
07 мар. 2021, в 18:22
5000 руб./за проект
07 мар. 2021, в 17:45
9000 руб./за проект