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()
  • Вопрос задан
  • 311 просмотров
Решения вопроса 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
лужу, паяю, ЭВМы починяю
В программе надо сделать две функции, одна получает путь к файлу и возвращает его в переменную; вторая функция открывает этот файл (кстати, открыла, и че? ну, это другой вопрос). Сделать две кнопки, повесить на каждую по функции. Всё...
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы