gpt4 book ai didi

Python GTK 调整大图像大小以适合窗口

转载 作者:行者123 更新时间:2023-12-04 13:44:42 24 4
gpt4 key购买 nike

重要提示 : 我正在使用 PyGObject访问 GTK 小部件,而不是 PyGTK .这就是这个问题与类似问题不同的原因:

  • PyGTK: How do I make an image automatically scale to fit it's parent widget?
  • Scale an image in GTK

  • 我想制作一个非常简单的应用程序,它显示一个标签、一个图像和一个按钮,所有这些都堆叠在一起。该应用程序应以全屏模式运行。

    当我尝试它时,我遇到了一个问题。我的图像具有非常高的分辨率,所以当我简单地从文件创建它并添加它时,我几乎看不到它的 20%。

    我想要的是根据窗口的大小(当应用程序以全屏运行时等于屏幕大小)按宽度缩放此图像。

    我试过使用 Pixbufs,但拨打了 scale_simple他们身上似乎没有太大变化。

    这是我当前的代码:
    import gi
    gi.require_version('Gtk', '3.0')
    from gi.repository import Gtk, GdkPixbuf


    class Window(Gtk.Window):
    def __init__(self):
    super().__init__(title='My app')

    layout = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
    dimensions = layout.get_allocation()

    pixbuf = GdkPixbuf.Pixbuf.new_from_file('path/to/image')
    pixbuf.scale_simple(dimensions.width, dimensions.height, GdkPixbuf.InterpType.BILINEAR)
    image = Gtk.Image.new_from_pixbuf(pixbuf)
    dismiss_btn = Gtk.Button(label='Button')

    dismiss_btn.connect('clicked', Gtk.main_quit)
    layout.add(image)
    layout.add(dismiss_btn)
    self.add(layout)


    win = Window()
    win.connect("destroy", Gtk.main_quit)
    win.show_all()
    Gtk.main()

    最佳答案

    问题是scale_simple实际上返回一个新的 Pixbuf,根据 GTK+ docs .

    可以通过调用 .get_screen() 来获取屏幕尺寸。在窗口上,然后拨打 .width().height()在屏幕对象上。

    整个代码放在一起看起来像这样:

    screen = self.get_screen()
    pixbuf = GdkPixbuf.Pixbuf.new_from_file('/path/to/image')
    pixbuf = pixbuf.scale_simple(screen.width(), screen.height() * 0.9, GdkPixbuf.InterpType.BILINEAR)
    image = Gtk.Image.new_from_pixbuf(pixbuf)

    关于Python GTK 调整大图像大小以适合窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50857102/

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