从 Tkinter Python 中的浏览按钮设置条目值

Posted

技术标签:

【中文标题】从 Tkinter Python 中的浏览按钮设置条目值【英文标题】:Set Entry value from a browse button in Tkinter Python 【发布时间】:2020-08-15 21:29:10 【问题描述】:

我在 Python 方面不是很好,尤其是在使用类时。我编写此代码以使用浏览按钮设置条目值,问题是这样我应该为每个按钮创建一个浏览方法。有没有更简单的方法来解决这个问题?

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()

谢谢!

【问题讨论】:

按照这个方法extend a tkinter widget using inheritance 【参考方案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()函数,将相应的输入字段传递给可以插入文本的函数。

希望这是有道理的,如果您有任何问题,请告诉我 :)

【讨论】:

太棒了!!谢谢你,现在它可以工作了,我确信这不会很困难!

以上是关于从 Tkinter Python 中的浏览按钮设置条目值的主要内容,如果未能解决你的问题,请参考以下文章

Python中的tkinter怎么做?

python 使用tkinter浏览目录按钮

python从tkinter小部件设置全局变量

不同类中的Python 3 tkinter按钮命令

Python / Tkinter:使用按钮更新类变量

多线程 Python Tkinter 串行监视器中的按钮问题