Python 如何展开按钮中的子项?

Python 如何展开按钮中的子项?,python,python-3.x,gtk,gtk3,Python,Python 3.x,Gtk,Gtk3,我刚刚升级到Fedora22,并且使用了GNOME3.16。 我正在运行我的一个小应用程序,我收到了一个弃用警告。路线对象的xscale属性将消失。但是有一个问题,没有它我无法展开子按钮 我创建了以下简单的测试代码: #!/usr/bin/env python3 import sys from gi.repository import Gtk class Application(Gtk.Application): def __init__(self): super

我刚刚升级到Fedora22,并且使用了GNOME3.16。 我正在运行我的一个小应用程序,我收到了一个弃用警告。路线对象的xscale属性将消失。但是有一个问题,没有它我无法展开子按钮

我创建了以下简单的测试代码:

#!/usr/bin/env python3

import sys
from gi.repository import Gtk


class Application(Gtk.Application):

    def __init__(self):
        super().__init__()
        self.connect('activate', self.on_activate)
        self.connect('startup', self.on_startup)

    def on_startup(self, app):
        self.window = Gtk.ApplicationWindow(application=app)
        self.window.set_position(Gtk.WindowPosition.MOUSE)
        self.window.set_default_size(600, 200)
        button = Gtk.Button(label='test')
        image = Gtk.Image.new_from_file('noimage.png')
        button.set_always_show_image(True)
        button.set_image(image)
        # I can't expand without this property bellow
        button.get_child().set_property('xscale', 1.0)
        self.window.add(button)

    def on_activate(self, app):
        self.window.show_all()


if __name__ == '__main__':
    main_app = Application()
    exit_status = main_app.run(sys.argv)
    sys.exit(exit_status)
你应该看到一个小而宽的窗口,里面有一个按钮,覆盖了窗口的所有可用空间。在按钮内部,您应该会看到左侧有一个无效的图像图标,右侧有一个文本标签

我使用xscale属性将图像与标签分开,这将扩展按钮内对齐对象的大小,并为标签和图像提供更多空间以分开展开。我想知道一种不用它也能达到同样效果的方法


我使用了gtk检查器(在应用程序运行时按住Ctrl+Shift+D键),并在该窗口中几乎所有对象中尝试了每一个正常或不太正常的属性,但没有成功。我尝试了我信任的搜索引擎,但找不到任何有这样一个特定问题的人。

GtkAlignment本身已被弃用。发件人:

GtkAlignment在3.14中已被弃用,不应在新编写的代码中使用。通过在子窗口小部件上使用“halign”、“valign”和“margin”属性,可以实现所需的效果

你在这里做不了什么。GtkAlignment是GtkButton的一个内部子级,有一些代码(比如您的代码)依赖于此结构。如果曾经移除过GTK校准(如GTK+4),GTK按钮的内部结构也将发生变化

如果您真的想避免使用不推荐使用的函数,可以将按钮的子项完全替换为水平GtkBox,将图像和标签打包在其中,并将图像的
hexpand
设置为
True
以模拟1的
xscale


有关新酒店的更多信息,请查看。

谢谢。我刚刚创建了一个没有任何参数的Button对象,我以为默认情况下它会添加一个空标签,但是没有。我甚至不需要把孩子从按钮上取下来。就像你建议的那样创建了一个漂亮的水平框,将它添加到按钮中,并将其他小部件打包到框中。它就像一个符咒^_^