Ошибка 'Entry' object is not callable
В окне создала кнопку,которая должна создать окошко-напоминание,текст для которого берется из Entry.Но при нажатии окно не появляется и полказывается ошибка.
class Child1(tk.Toplevel):
def __init__(self, parent):
super().__init__(parent)
self.parent = parent # << сохраняем ссылку на родительское окно
self.init_child1()
# vv перехватываем кнопку закрытия окна чтобы вернуть назад родительское окно
self.protocol("WM_DELETE_WINDOW", lambda: (parent.deiconify(), self.destroy()))
parent.withdraw() # << прячем родительское окно
def init_child1(self):
self.title("Создать экранное уведомление")
self.geometry("800x600")
self.config(bg="#CCFFFF")
entry_text = ttk.Entry(self)
entry_text.place(x=200, y=10)
label_title = tk.Label(self, text="Введите название", bg="#CCFFFF")
label_title.place(x=100, y=10)
btn_noti = tk.Button(self,text="Создать экранное уведомление",command=self.cli(entry_text()))
btn_noti.place(x=100,y=90)
def cli(self,entry_text):
import time
current_time = time.strftime("%H:%M")
time.sleep(2)
note =entry_text.get()
time.sleep(1)
cli_ = tk.Tk()
cli_.title("Напоминание")
root.geometry("300x300")
tk.Label(cli_, text=current_time).pack()
tk.Label(cli_, text=note).pack()
cli_.mainloop()
cli_(self)
Ответы (1 шт):
Автор решения: Daniil Loban
→ Ссылка
Cобытие на кнопку лучше в данном случае навешивать через лямбду(отложенный вызов, а не результат вызова self.cli(entry_text()). Ну и entry_text() - не может быть вызвано.
В методе cli я заккоментил cli_(self) так как это равнозначно tk.Tk()() что разумеется не имеет смысла и вызывает ошибку.
В общем: будьте аккуратны со скобочками () :)
from tkinter import ttk
import tkinter
class Child1(tkinter.Toplevel):
def __init__(self, parent):
super().__init__(parent)
#self.parent = parent # << сохраняем ссылку на родительское окно
self.init_child1()
# vv перехватываем кнопку закрытия окна чтобы вернуть назад родительское окно
self.protocol("WM_DELETE_WINDOW", lambda: (parent.deiconify(), self.destroy()))
parent.withdraw() # << прячем родительское окно
def init_child1(self):
self.title("Создать экранное уведомление")
self.geometry("800x600")
self.config(bg="#CCFFFF")
entry_text = ttk.Entry(self)
entry_text.place(x=200, y=10)
label_title = tkinter.Label(self, text="Введите название", bg="#CCFFFF")
label_title.place(x=100, y=10)
btn_noti = tkinter.Button(self, text="Создать экранное уведомление",command=lambda:self.cli(entry_text))
btn_noti.place(x=100,y=90)
def cli(self,entry_text):
import time
current_time = time.strftime("%H:%M")
time.sleep(2)
note =entry_text.get()
time.sleep(1)
cli_ = tkinter.Tk()
cli_.title("Напоминание")
root.geometry("300x300")
tkinter.Label(cli_, text=current_time).pack()
tkinter.Label(cli_, text=note).pack()
cli_.mainloop()
#cli_(self)
root = tkinter.Tk()
n = Child1(root)
root.mainloop()