Tkinter:Unable to bind and unbind function with a 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: Tkinter:Unable to bind and unbind function with a button (/thread-25338.html) |
Tkinter:Unable to bind and unbind function with a button - shallanq - Mar-27-2020 I'm having trouble binding and unbinding a function(using 2 buttons) to display a keyboard. I basically want keyboard()to be hidden first, but when the morn_med_button is clicked, it will appear and it will disappear when confirm_button1 is clicked. When i run the code, it says: return self.func(*args) TypeError:keyboard() takes 0 positional arguments but 1 was given This is my code below. from tkinter import * import RPi.GPIO as GPIO from tkinter import ttk from tkinter import font as tkfont import time root = Tk() root.geometry("2000x1900") root.config(bg="light blue") root.frame = Frame(root) morn_med_Text=Text(root,width=20,height=13) morn_med_label=Label(root,bg="light blue", font=("Arial",15 )) morn_med_button = Button(root, text="Add Medication", command=add_medication1, font=("Arial", 12)) morn_med_button.place(relx=0.2, rely = 0.76, anchor = CENTER) confirm_button1=Button(root, text="Confirm", command=confirm1, font=("Arial", 12)) def confirm1(): global morn_med_label morn_med=morn_med_Text.get("1.0",END) morn_med_label.place(relx=0.179, rely =0.82, anchor = CENTER) morn_med_Text.place_forget() confirm_button1.place_forget() morn_med_button.place(relx=0.2, rely = 0.76, anchor = CENTER) morn_med_label.config(text=morn_med) [u]confirm_button1.bind("<Button-1>",keyboard)[/u] def keyboard(): morn_med_button.unbind("<Button-1>") def select(value): if value == "Clear": morn_med_Text.delete(1.0,END) elif value == "Enter": morn_med_Text.insert(INSERT,'\n') elif value=="Backspace": text=morn_med_Text.get(1.0,END) morn_med_Text.insert(text[:-1],END) else: morn_med_Text.insert(END, value) buttons=[ 'q','w','e','r','t','y','u','i','o','p','Backspace','7','8','9','-', 'a','s','d','f','g','h','j','k','l','(',')','4','5','6','+', 'z','x','c','v','b','n','m',',','.','Clear','Enter','1','2','3','/', ' ', ] label1=Label(root,text='') label2=Label(root,text='') label2.grid(row=7,columnspan=15) label3=Label(root,text='') label3.grid(row=8,columnspan=15) varRow=9 varColumn=0 for button in buttons: command=lambda x=button: select(x) if button!=" ": Button(root,text=button,width=7,bg="#000000",fg="#ffffff", activebackground="#ffffff",activeforeground="#000000",relief='raised',padx=9, pady=9,bd=7,command=command,font=("Arial",17 )).grid(row=varRow,column=varColumn) if button==" ": Button(root,text=button,width=80,bg="#000000",fg="#ffffff", activebackground="#ffffff",activeforeground="#000000",relief='raised',padx=4, pady=4,bd=7,command=command,font=("Arial",20 )).grid(row=13,columnspan=20) varColumn+=1 if varColumn>14 and varRow==9: varColumn=0 varRow+=1 if varColumn>14 and varRow==10: varColumn=0 varRow+=1 root.mainloop() RE: Tkinter:Unable to bind and unbind function with a button - deanhystad - Mar-27-2020 When binding events in tkinter, the fuction you bind needs an event argument. The function you are binding has no arguments. RE: Tkinter:Unable to bind and unbind function with a button - joe_momma - Mar-28-2020 declare your functions before you create the buttons unless you create a class python reads your script from top to bottom: def add_medication1(): keyboard() def confirm1(): global morn_med_label,confirm_button1 morn_med=morn_med_Text.get("1.0",END) morn_med_label.place(relx=0.179, rely =0.82, anchor = CENTER) morn_med_Text.place_forget() confirm_button1.place_forget() morn_med_button.place(relx=0.2, rely = 0.76, anchor = CENTER) morn_med_label.config(text=morn_med) confirm_button1.bind("<Button-1>",keyboard) morn_med_Text=Text(root,width=20,height=13) morn_med_Text.place(x=300,y=300) morn_med_label=Label(root,bg="light blue", font=("Arial",15 )) morn_med_button = Button(root, text="Add Medication", command=add_medication1, font=("Arial", 12)) morn_med_button.place(relx=0.2, rely = 0.76, anchor = CENTER) confirm_button1=Button(root, text="Confirm", command=confirm1, font=("Arial", 12)) confirm_button1.place(x=5,y=400)if you bind a mouse event to a function it requires an argument def keyboard(event): morn_med_button.unbind("<Button-1>") def select(value): ....# moreI used event but it could be anything you want- then you can get information from the event like x= event.x to give you the x,y position of the mouse click |