Windows 11 21H2. Python 3.11.0.
Здравствуйте! Я новичок. При вызове функции через bind-привязку события <Return> (нажатие кнопки "Enter") у виджета "tkinter.entry" (entry_3) возникает ошибка "TypeError: func() takes 0 positional arguments but 1 was given".
Вот код программы:
А если в объявлении (def) функции прописываю аргумент (event), то нажатия "Enter" на текстовых полях отрабатывают нормально, а нажатие на кнопку выдает ошибку " TypeError: func() missing 1 required positional argument: 'event' "
Вот код:
Здравствуйте! Я новичок. При вызове функции через bind-привязку события <Return> (нажатие кнопки "Enter") у виджета "tkinter.entry" (entry_3) возникает ошибка "TypeError: func() takes 0 positional arguments but 1 was given".
Вот код программы:
Python:
from tkinter import *
# Main window
root = Tk()
root.title("Test")
root.geometry("300x200+100+100")
root.configure(bg='#CECECE')
# Main window
# Variables
font_1 = ("Helvetica", 14, 'bold')
font_2 = ("Helvetica", 12, 'bold')
font_3 = ("Veranda", 13)
# Variables
# Functions
def func():
entry_1.focus_set()
# Functions
# Wigets
entry_1 = Entry(font=font_1,
width = 20,
highlightthickness = 4,
highlightcolor = 'orange',
highlightbackground = 'gray'
)
entry_1.grid(row=0, column=0)
entry_1.bind('<Return>', lambda a: entry_2.focus_set())
entry_2 = Entry(font=font_1,
width = 20,
highlightthickness = 4,
highlightcolor = 'orange',
highlightbackground = 'gray'
)
entry_2.grid(row=1, column=0)
entry_2.bind('<Return>', lambda a: entry_3.focus_set())
entry_3 = Entry(font=font_1,
width = 20,
highlightthickness = 4,
highlightcolor = 'orange',
highlightbackground = 'gray'
)
entry_3.grid(row=2, column=0)
entry_3.bind('<Return>', func) # Тут выдает ошибку "TypeError: func() takes 0 positional arguments but 1 was given"
btn = Button(text="Button",
background="white",
foreground="black",
padx=5,
pady=5,
font=("Arial Bold", 15, 'bold'),
relief = 'raised',
width = 20,
command = func)
btn.grid(row=3, column=0)
# Wigets
entry_1.focus_set()
root.mainloop()
А если в объявлении (def) функции прописываю аргумент (event), то нажатия "Enter" на текстовых полях отрабатывают нормально, а нажатие на кнопку выдает ошибку " TypeError: func() missing 1 required positional argument: 'event' "
Вот код:
Python:
from tkinter import *
# Main window
root = Tk()
root.title("Test")
root.geometry("300x200+100+100")
root.configure(bg='#CECECE')
# Main window
# Variables
font_1 = ("Helvetica", 14, 'bold')
font_2 = ("Helvetica", 12, 'bold')
font_3 = ("Veranda", 13)
# Variables
# Functions
def func(event):
entry_1.focus_set()
# Functions
# Wigets
entry_1 = Entry(font=font_1,
width = 20,
highlightthickness = 4,
highlightcolor = 'orange',
highlightbackground = 'gray'
)
entry_1.grid(row=0, column=0)
entry_1.bind('<Return>', lambda a: entry_2.focus_set())
entry_2 = Entry(font=font_1,
width = 20,
highlightthickness = 4,
highlightcolor = 'orange',
highlightbackground = 'gray'
)
entry_2.grid(row=1, column=0)
entry_2.bind('<Return>', lambda a: entry_3.focus_set())
entry_3 = Entry(font=font_1,
width = 20,
highlightthickness = 4,
highlightcolor = 'orange',
highlightbackground = 'gray'
)
entry_3.grid(row=2, column=0)
entry_3.bind('<Return>', func)# Теперь тут нормально
btn = Button(text="Button",
background="white",
foreground="black",
padx=5,
pady=5,
font=("Arial Bold", 15, 'bold'),
relief = 'raised',
width = 20,
command = func) # А тут выдает ошибку "TypeError: func() missing 1 required positional argument: 'event'
"
btn.grid(row=3, column=0)
# Wigets
entry_1.focus_set()
root.mainloop()