Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 布局与GTK3固定_Python_Layout_Gtk_Gtk3 - Fatal编程技术网

Python 布局与GTK3固定

Python 布局与GTK3固定,python,layout,gtk,gtk3,Python,Layout,Gtk,Gtk3,如何使窗口具有可滚动布局,并在其顶部固定位置覆盖图像 我想我应该这样做嵌套结构: 。窗口 .. 固定 ... 滚动窗口 .... 布局 ..... ... ... 形象 但布局内容不显示在固定或其他布局内 下面是一个简单的例子: 下面是完整的examle,建议使用@elya5这样的覆盖小部件: 导入gi gi.要求_版本(“Gtk”、“3.0”) 从gi.repository导入Gtk 类主窗口(Gtk.Window): 定义初始化(自): Gtk.Window.\uuuu init\uuuu

如何使窗口具有可滚动布局,并在其顶部固定位置覆盖图像

我想我应该这样做嵌套结构:

。窗口
.. 固定
... 滚动窗口
.... 布局
..... ...
... 形象

但布局内容不显示在固定或其他布局内

下面是一个简单的例子:


下面是完整的examle,建议使用@elya5这样的覆盖小部件:

导入gi
gi.要求_版本(“Gtk”、“3.0”)
从gi.repository导入Gtk
类主窗口(Gtk.Window):
定义初始化(自):
Gtk.Window.\uuuu init\uuuu(self,title=“示例”)
#窗口选项
设置默认大小(200200)
#覆盖小部件的覆盖
self.overlay=Gtk.overlay()
self.add(self.overlay)
#用于滚动的滚动窗口
self.scrolledwindow=Gtk.scrolledwindow()
self.overlay.add(self.scrolled窗口)
#绝对定位小部件的布局
self.layout=Gtk.layout()
self.layout.set_vexpand(True)
self.layout.set_hexpand(真)
自我布局。设置大小(200900)
self.scrolledwindow.set\u hadjustment(self.layout.get\u hadjustment())
self.scrolled window.set\u vadjustment(self.layout.get\u vadjustment())
self.scrolledwindow.add(self.layout)
#固定位置覆盖窗口小部件的修复
self.fixed=Gtk.fixed()
self.overlay.add_覆盖(self.fixed)
self.overlay.set\u overlay\u pass\u through(self.fixed,True)
entry=Gtk.entry()
self.layout.put(入口,20,20)
icon=Gtk.Image.new_from_icon_name('dialog-information',Gtk.IconSize.dialog)
自我修复。放置(图标,60,10)
win=主窗口()
win.connect(“销毁”,lambda q:Gtk.main_quit())
赢,全力以赴
Gtk.main()

你试过使用Gtk.Overlay吗?@elya5,哦,你完全正确,我忘记了特殊的Overlay小部件!谢谢。这个例子似乎是正确的,只需注意set_overlay_pass_through(及其get_相关方法)在Gtk 3.18中是新的,所以这在以前的Gtk版本中不起作用。
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk


class MainWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="Example")

        self.set_default_size(200, 200)

        self.fixed = Gtk.Fixed()
        self.add(self.fixed)

        self.layout = Gtk.Layout()
        self.fixed.put(self.layout, 0, 0)
        self.layout.set_vexpand(True)
        self.layout.set_hexpand(True)

        icon = Gtk.Image.new_from_icon_name('icon', Gtk.IconSize.DIALOG)

        self.layout.put(icon, 0, 0)


win = MainWindow()
win.connect("destroy", lambda q: Gtk.main_quit())
win.show_all()
Gtk.main()