问题:同一界面,多个录入框,点击按钮选择文件并将文件名显示在指定录入框中。如下图所示:
解决办法:使用自定义类封装文件选择按钮。
核心代码:
from tkinter import filedialog
'''
文件选择按钮类
初始化参数:parent-所属窗口,text-按钮显示文本,dest-与录入框关联的值变量,r、c-按钮在界面上的布局行和列
'''
class FileButton():
def __init__(self, parent, text, dest, r, c):
self.dest = dest
self.btn = ttk.Button(parent, text = text, command = self.browse)
self.btn.grid(row=r, column=c)
def browse(self):
filename = filedialog.askopenfilename()
if self.dest != None and filename != None and filename != '':
self.dest.set(filename)
说明:
1、需要用到tkinter的filedialog。
2、调用过程示例代码如下:
from tkinter import *
from tkinter import ttk
root = Tk()
#初始化第一个文件录入框entry1并分配值变量txt1
txt1 = StringVar()
entry1 = ttk.Entry(root, textvariable=txt1)
entry1.grid(row = 1, column = 1)
#初始化第二个文件录入框entry2并分配值变量txt2
txt2 = StringVar()
entry2 = ttk.Entry(root, textvariable=txt2)
entry2.grid(row = 2, column = 1)
#调用自定义类初始化文件选择按钮并关联指定的值变量
FileButton(root, "...", txt1, 1, 2)
FileButton(root, "...", txt2, 2, 2)
root.mainloop()