Get name of command button - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: Get name of command button (/thread-31372.html) |
Get name of command button - Heyjoe - Dec-07-2020 import tkinter as tk root = tk.Tk() myfont = "helvitica 25" mybg = "light sky blue" myheight = 4 mywidth = 60 myheight2 = 6 mywidth2 = 20 myheight3 = 3 mywidth3 = 20 labcol = "spring green" anscol = "yellow" otherbutcol = "light sky blue" mypadx =0 mypady=0 class Main: def __init__(self, root): self.root = root root.geometry('1200x1200') self.First() def First(self): self.firstframe = tk.Frame(self.root) self.firstframe.grid(row=0, column=0) self.firstlabel = tk.Label(self.firstframe, text="firstlabel ", bg=labcol, font=myfont, relief="groove") self.firstlabel .config(height=myheight, width=mywidth) self.firstlabel .grid(row=1, column=1, sticky=tk.W) self.firstcommandbutton = tk.Button(self.firstframe, text="firstcommandbutton", bg=otherbutcol, font=myfont, relief="groove", command=self.Second) self.firstcommandbutton.config(height=myheight, width=mywidth) self.firstcommandbutton.grid(row=2, column=1, sticky=tk.W) self.quitbn = tk.Button(self.firstframe, text="Quit", font=myfont, bg="red", relief="groove", command=self.firstframe.quit) self.quitbn.config(height=myheight, width=mywidth) self.quitbn.grid(row=3, column=1, sticky=tk.W) def Second (self): print("It worked") m = Main(root) root.mainloop() import tkinter as tk root = tk.Tk() myfont = "helvitica 25" mybg = "light sky blue" myheight = 4 mywidth = 60 myheight2 = 6 mywidth2 = 20 myheight3 = 3 mywidth3 = 20 labcol = "spring green" anscol = "yellow" otherbutcol = "light sky blue" mypadx =0 mypady=0 class Main: def __init__(self, root): self.root = root root.geometry('1200x1200') self.First() def First(self): self.firstframe = tk.Frame(self.root) self.firstframe.grid(row=0, column=0) self.firstlabel = tk.Label(self.firstframe, text="firstlabel ", bg=labcol, font=myfont, relief="groove") self.firstlabel .config(height=myheight, width=mywidth) self.firstlabel .grid(row=1, column=1, sticky=tk.W) self.firstcommandbutton = tk.Button(self.firstframe, text="firstcommandbutton", bg = otherbutcol, font=myfont, relief="groove", command=self.Second) self.firstcommandbutton.config(height=myheight, width=mywidth) self.firstcommandbutton.grid(row=2, column=1, sticky=tk.W) self.quitbn = tk.Button(self.firstframe, text="Quit", font=myfont, bg="red", relief="groove", command=self.firstframe.quit) self.quitbn.config(height=myheight, width=mywidth) self.quitbn.grid(row=3, column=1, sticky=tk.W) def Second (self): print("It worked") m = Main(root) root.mainloop()This code creates a command button called "firstcommandbutton". This button calls the method "Second". Can I create code in Second, that gives me the name of the firstcommandbutton, and reads it into a variable.? If that is not possible can I get the text of the firstcommandbutton? RE: Get name of command button - deanhystad - Dec-07-2020 Why? If you want to access the button that called a finction it is easier to just pass the button as an argument. self.firstcommandbutton.configure(command=lambda x = self.firstcommandbutton: self.Second(x)) def second(button): print(button['text'] RE: Get name of command button - Heyjoe - Dec-09-2020 This is how I changed the code based on your answer. It now gives me a m = Main(root) ^ SyntaxError: invalid syntax import tkinter as tk root = tk.Tk) myfont = "helvitica 25" mybg = "light sky blue" myheight = 4 mywidth = 60 myheight2 = 6 mywidth2 = 20 myheight3 = 3 mywidth3 = 20 labcol = "spring green" anscol = "yellow" otherbutcol = "light sky blue" mypadx = 0 mypady = 0 class Main: def __init__(self, root): self.root = root root.geometry('1200x1200') self.First() def First(self): self.firstframe = tk.Frame(self.root) self.firstframe.grid(row=0, column=0) self.firstlabel = tk.Label(self.firstframe, text="firstlabel ", bg=labcol, font=myfont, relief="groove") self.firstlabel.config(height=myheight, width=mywidth) self.firstlabel.grid(row=1, column=1, sticky=tk.W) self.firstcommandbutton = tk.Button(self.firstframe, text="firstcommandbutton", bg=otherbutcol, font=myfont, relief="groove") self.firstcommandbutton.config(height=myheight, width=mywidth, command=lambda x = self.firstcommandbutton: self.Second(x)) self.firstcommandbutton.grid(row=2, column=1, sticky=tk.W) self.quitbn = tk.Button(self.firstframe, text="Quit", font=myfont, bg="red", relief="groove", command=self.firstframe.quit) self.quitbn.config(height=myheight, width=mywidth) self.quitbn.grid(row=3, column=1, sticky=tk.W) def second(button): print(button['text'] m = Main(root) root.mainloop() RE: Get name of command button - deanhystad - Dec-10-2020 You should fix the syntax error. The error is not this line "m = Main(root)". Here are a couple of methods that receive a widget as an argument and perform some action on the widget. import tkinter as tk class MyWindow: def __init__(self, root): frame = tk.Frame(root) frame.pack(expand=True, fill=tk.BOTH) label = tk.Label(frame, text="Press the Button") label.pack(expand=True, fill=tk.BOTH, padx=5, pady=5) button = tk.Button(frame, text="This is the Button") button.config(command=lambda:self.button_pressed(button, label)) button.pack(expand=True, fill=tk.BOTH, padx=5, pady=5) quitbn = tk.Button(frame, text="Quit", command=lambda:self.quit(root)) quitbn.pack(expand=True, fill=tk.BOTH, padx=5, pady=5) def button_pressed(self, button, label): label['text'] = 'The button was pressed' button['state'] = tk.DISABLED def quit(self, window): print('Quitting') window.destroy() root = tk.Tk() root.geometry('200x200') MyWindow(root) root.mainloop() |