Установить значение ввода с помощью кнопки обзора в Tkinter Python - PullRequest
0 голосов
/ 01 мая 2020

Я не очень хорош в Python, особенно при использовании классов. Я пишу этот код для установки значения Entry с помощью кнопки обзора, проблема в том, что таким образом я должен создать метод обзора для каждой кнопки. Есть более простой способ решить эту проблему?

from tkinter import *
from tkinter.filedialog import askopenfilename

class App:
    def __init__(self, parent):        
        self.button1 = Button(text = 'browse', command = self.browse1)     
        self.button1.grid (row = 0, column = 1)

        self.input_file1 = Entry(textvariable = self.browse1)
        self.input_file1.grid(row=0, column = 0)

        self.button2 = Button(text = 'browse', command = self.browse2)     
        self.button2.grid (row = 1, column = 1)

        self.input_file2 = Entry(textvariable = self.browse2)
        self.input_file2.grid(row=1, column = 0)

    def browse1(self):
        filename = askopenfilename(title = 'Select a file')
        self.input_file1.delete(0, END)
        self.input_file1.insert(0, filename)

    def browse2(self):
        filename = askopenfilename(title = 'Select a file')
        self.input_file2.delete(0, END)
        self.input_file2.insert(0, filename)

root = Tk()
root.geometry('900x550')
root.title('prove') 
MyApp = App(root)  
root.mainloop()

Спасибо!

1 Ответ

1 голос
/ 01 мая 2020

Если у вас есть такая функция:

def browse(self, entry):
    filename = askopenfilename(title = 'Select a file')
    entry.delete(0, END)
    entry.insert(0, filename)

, а затем измените ваши определения на:

self.button1 = Button(text = 'browse', command = lambda: self.browse(self.input_file1))     
self.button1.grid (row = 0, column = 1)

self.input_file1 = Entry()
self.input_file1.grid(row=0, column = 0)

Затем, когда кнопка нажата, она вызывает lambda функция, которая вызывает функцию browse(), передавая соответствующее поле ввода функции, которая затем может вставить текст.

Надеюсь, что это имеет смысл, дайте мне знать, если у вас есть какие-либо проблемы:)

...