gpt4 book ai didi

python - 如何在全屏模式下更改 Gtk 应用程序的布局?

转载 作者:太空狗 更新时间:2023-10-29 23:59:54 26 4
gpt4 key购买 nike

我正在使用 Python 和 Gtk 开发另一个图像查看器,该查看器目前非常简单:它由一个 GtkWindow 和一个 GtkTreeView 在左侧显示我的图像列表,以及右侧的 GtkImage,显示实际图像。到目前为止,还不错。

现在,我想全屏显示,只显示黑色背景的图像等。

我可以看到几种方法:

  • 我可以隐藏 () 窗口,并显示一个大的 GtkImage,但是我丢失了之前在窗口上设置的所有内容(例如信号),而且我隐藏全屏窗口,这有点奇怪;
  • 我可以 hide() 窗口的内容,删除窗口的内容(据我所知,它只能有一个子窗口?),然后在里面放一个 GtkImage (并在退出全屏时执行相反的操作);
  • 我可以尝试使用窗口内的容器,并在窗口进入全屏/退出全屏时隐藏/显示它们的内容。更准确地说,我正在考虑添加另一个 GtkHBox 作为我窗口的直接子级,有两个子级,在“正常”模式下只显示第一个,在全屏模式下只显示第二个。

这一切看起来有点老套,所以我想知道处理这种情况的推荐方法是什么。谢谢!

最佳答案

我认为实现这一点的最简单方法是使用一个布局来设置所有小部件和信号设置。然后,当您切换到全屏和退出全屏时,您将拥有一组可见和不可见的小部件。试试下面的演示。这是一个简单的实现,当您按 F11 时进入和退出全屏。 HBox 用于制作布局,其中包含左侧的标签和右侧的图像。我用一些虚拟文本填充了标签,以便它占用大量空间。当您切换进出全屏时,它会切换标签的可见性,从而使图像占据全屏空间或与标签共享。为了演示目的,我只是使用了 gtk 附带的一张图片。下面是两个屏幕截图,显示了全屏和非全屏的布局。

代码

import gtk

def keypress(win, event):
if event.keyval == gtk.keysyms.F11:
win.is_fullscreen = not getattr(win, 'is_fullscreen', False)
action = win.fullscreen if win.is_fullscreen else win.unfullscreen
action()
label.set_visible(not win.is_fullscreen)

win = gtk.Window()
win.connect("delete-event", gtk.main_quit)
win.connect('key-press-event', keypress)
image = gtk.image_new_from_stock(gtk.STOCK_ABOUT, gtk.ICON_SIZE_DIALOG)
label = gtk.Label(('test ' * 20 + '\n') * 20)
vbox = gtk.HBox()
vbox.add(label)
vbox.add(image)
win.add(vbox)
win.show_all()
gtk.main()

普通窗口

enter image description here

全屏

enter image description here

关于python - 如何在全屏模式下更改 Gtk 应用程序的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13658460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com