Gtk3 从文件加载全窗口图像(python3)
我需要找到一种方法,从文件中加载一张图片,并且这张图片要保持原来的大小。我看过一些文档,像是这个和这个,但似乎只有通过使用构建器类来加载用glade设计的界面才能实现。不过,我通过代码尝试了以下方法,但结果并不理想,图片被裁剪了。
from gi.repository import Gtk
class MainWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title='GMouse 600')
self.layout = Gtk.Layout.new(None,None)
self.add(self.layout)
self.background = Gtk.Image.new_from_file('./images/g600-thumb-buttons.jpg')
self.layout.put(self.background, 0, 0)
window = MainWindow()
window.connect('delete-event', Gtk.main_quit)
window.show_all()
Gtk.main()
我想知道如何通过代码来做到这一点,让我的图片能够填满整个窗口。有没有人能提供一些建议或可能的解决方案让我试试?
需要注意的是,我想通过代码来实现这个功能,因为使用glade确实能达到想要的效果,但当我尝试在图片上添加网格布局或其他控件时,它就不允许我这样做。此外,自己编码也能让我更好地学习,而且我的界面比较小,使用的控件也很少。
1 个回答
1
看起来我用下面的代码解决了这个问题,使用的是Gtk.Overlay。
from gi.repository import Gtk
class MainWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title='GMouse 600')
self.overlay = Gtk.Overlay()
self.add(self.overlay)
self.background = Gtk.Image.new_from_file('./images/g600-thumb-buttons.jpg')
self.overlay.add(self.background)
self.grid = Gtk.Grid()
self.button = Gtk.Button(label='Test')
self.grid.add(self.button)
self.overlay.add_overlay(self.grid)
window = MainWindow()
window.connect('delete-event', Gtk.main_quit)
window.show_all()
Gtk.main()