Я нашел этот код для зависания здесь, но не могу найти способ задать вопрос, так что я здесь. Так что проблема здесь в том, что связывание работает так, как мне нужно, но после связывания кнопка теряет свою командную функцию и ничего не делает после щелчка. Как я могу это исправить или сделать другим способом?
import tkinter as tk
from tkinter import *
def com(e):
print("Ahoj")
print(e)
def on_enter(e):
global d
x, y = root.myButton.winfo_rootx(), root.myButton.winfo_rooty()
x = x + root.myButton.winfo_width()
y = y + root.myButton.winfo_height()
d = Toplevel()
data="+{}+{}".format(x,y)
d.geometry(data)
d.overrideredirect(1)
L= tk.Label(d, text="Lorme ipsum lorem ipsum...", font=('Helvetica', 12))
L.pack()
d.mainloop()
def on_leave(e):
d.destroy()
root = tk.Tk()
root.myButton = tk.Button(root,text="Click Me", command=com)
root.myButton.grid()
root.myButton.bind("<Enter>", on_enter)
root.myButton.bind("<Leave>", on_leave)
root.mainloop()
Вот часть моего основного кода (не хочу делиться всем этим)
Обновлено Извините, слишком много ошибок.
from tkinter import *
import tkinter as tk
class Page(tk.Tk):
def __init__(self, *ags, **kwargs):
tk.Tk.__init__(self)
self._frame=MyPage(self)
self._frame.grid()
class MyPage(tk.Frame):
buttons=[1,2,3,4,5,6]
buttons_store=[None, None, None, None, None, None]
def __init__(self, controller):
tk.Frame.__init__(self)
i=0
for button in self.buttons:
command = lambda x=button: self.select(x)
self.buttons_store[button-1]=tk.Button(self, text=button, command=command) # here is the command function
self.buttons_store[button-1].bind("<Enter>",lambda x, butt= button-1: self.on_enter(x))
self.buttons_store[button-1].bind("<Leave>",lambda x,butt= button-1: self.on_leave(x))
self.buttons_store[button-1].bind("<Button-1>",lambda x,butt= button-1: self.on_leave(x))
self.buttons_store[button-1].grid(sticky="WENS",ipadx=5, ipady=5,column=i, row=i)
i+=1
def select(self,x):
print(x)
def on_enter(self,e):
#print("im in") # This works
self.d= tk.Toplevel()# But if i add this piece buttton loses his command function
l= tk.Label(self.d,text="Ahoj" )
l.grid()
self.d.mainloop()
def on_leave(self,e):
#print("im out")# this works right
self.d.destroy()
app = Page()
app.mainloop()
Под связыванием есть только окно кукол (функция Toplelvel)