Событие Python Tkinter не работает для записи в кадре - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть запись в рамке.Я хочу передать событие из этой записи.

Вот код, который работает, но не включает в себя запись во фрейме:

import tkinter as tk
myUi= tk.Tk()
myFrame = tk.Frame(myUi)
myFrame.pack()
def printMe(event):
    value = event.widget.get()
    print(value)
myEntry = tk.Entry(myUi,name='entry')
myEntry.bindtags(('.entry','Entry'))
myEntry.bind("<KeyRelease>", printMe)
myEntry.pack()
myUi.mainloop()

Вот код, который не работает:

import tkinter as tk
myUi= tk.Tk()
myFrame = tk.Frame(myUi)
myFrame.pack()
def printMe(event):
    value = event.widget.get()
    print(value)
myEntry = tk.Entry(myFrame,name='entry')
myEntry.bindtags(('.entry','Entry'))
myEntry.bind("<KeyRelease>", printMe)
myEntry.pack()
myUi.mainloop()

1 Ответ

0 голосов
/ 28 декабря 2018

Когда вы помещаете запись во фрейм, ее тег привязки содержит собственное имя и имя его предков, разделенных точками.В этом конкретном случае тег привязки для записи - .!frame.myentry.Это можно увидеть, распечатав привязанные теги по умолчанию перед их изменением (например: print(str(myEntry)))

Поскольку вы изменяете теги привязки для записи на ('.entry', 'Entry'), любые привязки на самом виджете (то есть: на теге привязки .!frame.entry) не будет связан с виджетом.

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