为了账号安全,请及时绑定邮箱和手机立即绑定

Python Gtk 显示和隐藏图像

Python Gtk 显示和隐藏图像

RISEBY 2022-06-07 16:39:08
我是 GTK 的新手,我想知道当我单击窗口时如何在 (x, y) 处显示图像。我放了一个 image.show() 和一个 image.hide() 但什么也没出现...from gi.repository import Gtkimport timedef 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()
查看完整描述

2 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

考虑以下是我认为您打算编写的程序。它会显示您单击的图像,然后在 0.2 秒后使其消失。延迟时间更长会更有趣。


EventBox 是必需的,因为 Window 或 Fixed 都不会发出按钮按下事件,尽管它们是小部件。这可能在我的后一个版本中发生了变化,因此可以省略它。但是在我的机器上没有它,代码就无法工作。


在 EventBox 和 Fixed 上调用 show 是多余的,window.show_all()因为它们会显示它们,因为它们当时是树的一部分。但是除非您使用的是 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()


查看完整回答
反对 回复 2022-06-07
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

由于 Gtk 主循环,您不能使用 time.sleep。而是使用这样的超时:


from gi.repository import GLib

....

image.show()

GLib.timeout_add(200, image.hide)

除此之外,您没有使用window.add(image)


查看完整回答
反对 回复 2022-06-07
  • 2 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信