TransWikia.com

Вызов диалога открытия файла при нажатии на кнопку

Stack Overflow на русском Asked on December 7, 2021

столкнулся с проблемой создал окно с кнопкой которое открывает следующие окно в котором есть кнопка для выбора файла, но выбор файла происходит при нажатие первой кнопки, а вторая остаётся неактивной

class Child(tk.Toplevel): #Настройка первого окна
    def __init__(self):
        super().__init__(root)
        self.init_child()
        self.view = app

    def init_child(self):
        self.title('Додати')
        self.geometry('400x720+400+300')
        self.resizable(False, False)
    
   

        self.btn = ttk.Button(self, text='Создать файл', command=Generate) #Кнопка открытия второго окна
            self.btn.place(x=50, y=480)
    
            self.grab_set()
            self.focus_set()
    
    
    
        def Generate(self):
            Window2()
    
    
class Generate(tk.Toplevel): # Настройка второго окна
    def __init__(self, *arg, **kwarg):
        super().__init__(*arg, **kwarg)
        self.init_gen()
        self.view = app




    def init_gen(self):
        self.title('Создать файл')
        self.geometry('400x720+100+300')
        self.resizable(False, False)

        file = filedialog.askopenfilename()

        self.btn1 = ttk.Button(self, text='Выбрать файл', command=file) #Кнопка выбора файла
        self.btn1.place(x=50, y=480) 
        

One Answer

filedialog.askopenfilename() сразу выполняет открытие диалога выбора файла, результатом вызова будет имя файла. Дальше вы полученное имя файла зачем-то указываете как команду для кнопки (очевидно, это не правильно). Делайте вызов диалога не в init_gen, а в отдельной функции, и эту функцию укажите как команду для кнопки, пример:

class Generate(tk.Toplevel): # Настройка второго окна
    ...

    def init_gen(self):
        ...
    
        def get_file_name():
            file = filedialog.askopenfilename()
            # Дальше в этой же функции работайте с полученным именем файла, например, можно открыть этот файл
            
        self.btn1 = ttk.Button(self, text='Выбрать файл', command=get_file_name) #Кнопка выбора файла

Answered by insolor on December 7, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP