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()