我刚刚更新到Fedora 22,并获得了Gnome 3.16。 我正在运行我的一个小应用程序,我收到了弃用警告。 Alignment对象的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)并在该窗口中的几乎所有对象中尝试了每个理智且不太理智的属性,但没有成功。我尝试了我可信赖的搜索引擎,但无法找到任何有这种特定问题的人。
答案 0 :(得分:2)
GtkAlignment本身已被弃用。来自the docs:
GtkAlignment已在3.14中弃用,不应在新编写的代码中使用。通过在子窗口小部件上使用“halign”,“valign”和“margin”属性,可以实现所需的效果。
你在这里做的不多。 GtkAlignment是GtkButton的内部子代,并且存在依赖于此结构的代码(例如您的代码)。如果GtkAlignment被删除(例如在GTK + 4中),GtkButton的内部结构也会改变。
如果确实想要避免使用已弃用的功能,您可以完全用水平GtkBox替换按钮的子项,将图像和标签打包在里面,然后设置图像&#39 ; s hexpand
到True
来模拟xscale
的1。
请查看this以获取有关新属性的更多信息。