Python Gtk 显示和隐藏图像

我是 GTK 的新手,我想知道当我单击窗口时如何在 (x, y) 处显示图像。我放了一个 image.show() 和一个 image.hide() 但什么也没出现...


from gi.repository import Gtk

import time


def callback(window, event):

    print ('Clicked at x=', event.x, "and y=", event.y)

    image.show()

    time.sleep(0.2)

    image.hide() 


image = Gtk.Image()

image.set_from_file("C:\\Users\\alimacher\\FF0000.png")


window = Gtk.Window()


window.set_title('Dalle Test')


window.set_size_request(320, 240)


window.connect('button-press-event', callback)

window.connect('destroy', lambda w: Gtk.main_quit())

window.show_all()

Gtk.main()


RISEBY
浏览 187回答 2
2回答

PIPIONE

考虑以下是我认为您打算编写的程序。它会显示您单击的图像,然后在 0.2 秒后使其消失。延迟时间更长会更有趣。EventBox 是必需的,因为 Window 或 Fixed 都不会发出按钮按下事件,尽管它们是小部件。这可能在我的后一个版本中发生了变化,因此可以省略它。但是在我的机器上没有它,代码就无法工作。在 EventBox 和 Fixed 上调用 show 是多余的,window.show_all()因为它们会显示它们,因为它们当时是树的一部分。但是除非您使用的是 GTK 版本,其中小部件默认显示而不是隐藏,否则图像上的显示调用不会。由于当时图像不存在。from gi.repository import Gtk, GLibwindow = 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()

慕尼黑8549860

由于 Gtk 主循环,您不能使用 time.sleep。而是使用这样的超时:from gi.repository import GLib....image.show()GLib.timeout_add(200, image.hide)除此之外,您没有使用window.add(image)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python