使用不同的按钮调用相同的功能

时间:2018-07-18 05:32:38

标签: python tkinter

如何使用不同的按钮调用相同的功能?目前,我正在为不同的按钮创建不同的功能。

from tkinter import *
from tkinter import filedialog
window=Tk()
window.title("CNO")

def browsefunc():
    filename=filedialog.askopenfilename(parent=window,initialdir="C:\\Users\\jyoti\\Documents\\Python")
    pathlabel_lbl1.config(text=filename)

def browsefunc1():
    filename=filedialog.askopenfilename(parent=window,initialdir="C:\\Users\\jyoti\\Documents\\Python")
    pathlabel_lbl2.config(text=filename)

Browse_btn=Button(window,text="Browse",command=browsefunc)
Browse_btn.grid(row=1,column=2,sticky=W+E)
pathlabel_lbl1=Label(window)
pathlabel_lbl1.grid(row=1,column=0,columnspan=2,sticky=W+E)

Browse_btn=Button(window,text="Browse",command=browsefunc1)
Browse_btn.grid(row=2,column=2,sticky=W+E)
pathlabel_lbl2=Label(window)
pathlabel_lbl2.grid(row=2,column=0,columnspan=2,sticky=W+E)

2 个答案:

答案 0 :(得分:1)

Tkinter并不限制可以通过不同的小部件调用函数的次数。因此,您可以简单地将browserfunc()作为任意数量的按钮的命令属性。使用以下内容:

from tkinter import *
from tkinter import filedialog

window=Tk()
window.title("CNO")

def browsefunc():
    filename=filedialog.askopenfilename(parent=window,initialdir="C:\\Users\\jyoti\\Documents\\Python")
    pathlabel_lbl1.config(text=filename)

def browsefunc1():
    filename=filedialog.askopenfilename(parent=window,initialdir="C:\\Users\\jyoti\\Documents\\Python")
    pathlabel_lbl2.config(text=filename)

Browse_btn=Button(window,text="Browse",command=browsefunc)
Browse_btn.grid(row=1,column=2,sticky=W+E)
pathlabel_lbl1=Label(window)
pathlabel_lbl1.grid(row=1,column=0,columnspan=2,sticky=W+E)

Browse_btn=Button(window,text="Browse",command=browsefunc)
Browse_btn.grid(row=2,column=2,sticky=W+E)
pathlabel_lbl2=Label(window)
pathlabel_lbl2.grid(row=2,column=0,columnspan=2,sticky=W+E)

window.mainloop() 

您有时可能还想使用lambda。尽管就您而言,它根本不是必需的。

希望这会有所帮助。

答案 1 :(得分:0)

只需编辑command=browsefunc使其与两个按钮中的函数名称都匹配。

当前您有Browse_btn=Button(window,text="Browse",command=browsefunc)Browse_btn=Button(window,text="Browse",command=browsefunc1),因此只需编辑最后一个即可调用相同的函数名。