程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

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

发布于2019-10-14 20:55     阅读(1123)     评论(0)     点赞(28)     收藏(5)


我正在使用Python和Gtk开发另一个图像查看器,并且该查看器目前非常简单:它由一个组成,GtkWindow其中一个GtkTreeView在左侧显示我的图像列表,一个GtkImage在右侧显示实际图像。到现在为止还挺好。

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

我可以看到几种方法:

  • 我可以隐藏()窗口,GtkImage而是显示一个大窗口,但是我失去了之前在窗口上设置的所有内容(例如信号),并且隐藏了全屏显示的窗口,这有点奇怪的;
  • 我可以隐藏()窗口的内容,删除窗口的内容(据我所知,只能有一个孩子?),然后放一个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()

普通窗

在此处输入图片说明

全屏

在此处输入图片说明



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/136801/358166b1e22851806376/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

28 0
收藏该文
已收藏

评论内容:(最多支持255个字符)