Я использую Tkinter в Python 3.7, чтобы пользователь мог выбрать файл с помощью окна askopenfilename. Еще у меня есть кнопка "Выполнить". Я хочу проверить, был ли открыт файл. Если файл не открывается, мне нужно сообщение об ошибке, а если файл был выбран, я бы хотел, чтобы программа запустилась.
Вот код, который у меня есть на данный момент:
import tkinter as tk
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
class GetInfo:
def __init__(self, master):
self.master = master
self.FileLabel = Label(master, text="Open the File to Use", font=("Arial Bold", 13)).grid(row=9, column=0,
sticky=W)
openFileCommand = master.register(self.FileOpen)
self.file_button = ttk.Button(master, text="Select File",
command=openFileCommand).grid(row=10, column=0, sticky=W, pady=10)
runCommand = master.register(self.getInput)
exitCommand = master.register(self.getCancel)
self.run_button = ttk.Button(master, text="Run",
command=runCommand).grid(row=20, column=0, sticky=W)
self.cancel_button = ttk.Button(master, text="Cancel",
command=exitCommand).grid(row=20, column=1, sticky=W)
def FileOpen(self):
self.File = filedialog.askopenfilename(title="Open the file",
filetypes=(("Files", "*.txt"), ("All Files", "*")))
self.file_only = self.File.split('/')[-1]
def getInput(self):
if self.File is None:
self.warning_window = tk.showerror('Error', 'Please select a file to use.')
else:
self.close_box_window = tk.messagebox.askokcancel('Running', "Running the program, default = 'ok'")
if self.close_box_window == True:
root.destroy()
else:
return
def getCancel(self):
self.MsgBox_window = tk.messagebox.askokcancel("Exit", "Are you sure you want to exit?", icon="warning",
default='cancel')
if self.MsgBox_window == False:
return
else:
root.destroy()
root = Tk()
root.geometry('800x500')
gui = GetInfo(root)
root.mainloop()
File = gui.file_only
Я продолжаю получать сообщение об ошибке:
AttributeError: 'GetInfo' object has no attribute 'File'
У меня это работало раньше (без проверки if / else для кода self.File). Я не знаю, как получить то, что хочу. Любая помощь будет принята с благодарностью.