GTK与 Python的子控件未被渲染
我对GTK还挺陌生的。我正在尝试构建一个Hello World应用。UI元素在 main.ui 文件中定义,并使用模板来加载该文件。我现在只看到一个窗口,没有按钮。连 title 都没有更新。所以我猜模板没有起作用。有人能帮忙吗?
UI文件(main.ui)
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 1.0.2 -->
<interface>
<!-- interface-name ui.ui -->
<requires lib="gtk" version="4.0"/>
<object class="GtkApplicationWindow">
<property name="title">Hello</property>
<child>
<object class="GtkButton">
<property name="label">Click Me</property>
</object>
</child>
</object>
</interface>
Python代码
import gi
gi.require_version("Gtk", "4.0")
from gi.repository import Gtk
@Gtk.Template(filename="ui/main.ui")
class MainWindow(Gtk.ApplicationWindow):
__gtype_name__ = "MainWindow"
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.init_template()
def on_activate(app):
win = MainWindow()
win.set_application(application=app)
win.present()
app = Gtk.Application()
app.connect("activate", on_activate)
app.run(None)
我看到的效果

预期结果

解决方案
按这种方式更新了 .ui 文件,结果起作用了。从 object 到 template。
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 1.0.2 -->
<interface>
<!-- interface-name ui.ui -->
<requires lib="gtk" version="4.0"/>
<template class="MainWindow" parent="GtkApplicationWindow">
<property name="title">Hello</property>
<child>
<object class="GtkButton">
<property name="label">Click Me</property>
</object>
</child>
</template>
</interface>
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。