Установить значение входа с помощью кнопки просмотра в Tkinter Python
Я не очень хорошо разбираюсь в 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 ответ
Если у вас есть такая функция:
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()
Функция, передавая соответствующее поле ввода функции, которая затем может вставить текст.
Надеюсь, это имеет смысл, дайте мне знать, если у вас возникнут проблемы:)