Рассмотрим следующую программу, которую, как я думал, вы хотели написать.Это показывает изображение, где вы нажимаете, а затем заставляет его исчезнуть через 0,2 секунды.Это было бы более интересно с большей задержкой.
EventBox не нужен, поскольку ни Window, ни Fixed не генерируют событие нажатия кнопки, хотя они и являются виджетами.Возможно, это изменилось в более поздней версии, чем у меня, поэтому можно было бы ее опустить.Но код не работал без него на моей машине.
Вызов show на EventBox и Fixed был избыточным, так как window.show_all()
покажет их, поскольку они являются частью дерева в то время.Но вызов show на изображении возможен только в том случае, если вы используете версию GTK, в которой виджеты отображаются по умолчанию, а не скрыты.Поскольку Изображение не существует в то время.
from gi.repository import Gtk, GLib
window = Gtk.Window()
window.set_title('Dalle Test')
window.set_size_request(320, 240)
eventbox = Gtk.EventBox()
window.add(eventbox)
fixed = Gtk.Fixed()
eventbox.add(fixed)
def callback(window, event, *data):
print('Clicked at x=', event.x, "and y=", event.y)
image = Gtk.Image()
image.show()
image.set_from_file("FF0000.png")
image.set_size_request(64,64)
fixed.put(image, int(event.x), int(event.y))
def remove():
fixed.remove(image)
GLib.timeout_add(200, remove)
eventbox.connect('button-press-event', callback)
window.connect('destroy', lambda w: Gtk.main_quit())
window.show_all()
Gtk.main()