Как вызвать метод, используя кнопку Button, где я использую функцию bind? - PullRequest
0 голосов
/ 08 февраля 2020

Я нашел этот код для зависания здесь, но не могу найти способ задать вопрос, так что я здесь. Так что проблема здесь в том, что связывание работает так, как мне нужно, но после связывания кнопка теряет свою командную функцию и ничего не делает после щелчка. Как я могу это исправить или сделать другим способом?

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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...