gpt4 book ai didi

python - gtk.Builder() 和多个空地文件中断

转载 作者:太空宇宙 更新时间:2023-11-04 01:43:44 25 4
gpt4 key购买 nike

我有一个 glade gui,我也想使用 glade 文件插入另一个对象。

当我按照下面的方式执行时(这基本上就是我正在做的)整个应用程序挂起并且 self.show() 并以 100% 的速度最大化 CPU。如果我用 self.builder = gtk.Builder() 替换一个人的第一行 init() 然后应用程序运行,我可以设置小部件,即:设置条目的内容,设置和更改值组合框。但我无法响应信号,按钮点击永远不会调用处理程序。

在实际代码中,对象二被设置为笔记本中的一页,我还有多个其他页面,gtk.main() 在拥有笔记本的对象中。所有这些都按预期工作,只是失败的对象。

有什么线索吗?我已经尝试为每个小部件调用 self.builder.connect_signals(),但它仍然没有注意到它们。

class one(gtk.VBox):
def __init__(self, builder):
gtk.VBox.__init__(self)
self.builder = builder # if this is self.builder = gtk.Builder() app runs but widget signals go missing.
self.builder.add_from_file("ui_for_one.glade")
self.show() # Endless loop here?

class two(object): # This is the page in a notebook.
def __init__(self):
self.builder = gtk.Builder()
self.builder.add_from_file("ui_for_two.glade")
self.some_container = self.builder.get_object("some_container")
self.one = one(self.builder)
self.some_container.pack_start(self.one, False, False)

最佳答案

在两个类中使用相同的 gtk.Builder 对象是否有充分的理由?
这可能是您遇到问题的原因。在您的 one 类中,您加载了一个 glade 文件,但您从不对其小部件执行任何操作。这样的事情应该有效:

class one(gtk.VBox):

def __init__(self):
gtk.VBox.__init__(self)
self.builder = gtk.Builder()
self.builder.add_from_file("ui_for_one.glade")
some_widget = self.builder.get_object("some_widget")
self.add(some_widget)
self.builder.connect_signals(self)
# No reason to call self.show() here, that should be done manually.

#Your callback functions here

class two(object): # This is the page in a notebook.

def __init__(self):
self.builder = gtk.Builder()
self.builder.add_from_file("ui_for_two.glade")
self.some_container = self.builder.get_object("some_container")
self.one = one()
self.some_container.pack_start(self.one, False, False)
self.some_container.show_all() #recursively show some_container and all its child widgets

self.builder.connect_signals(self)

有关更多信息,请查看这些 Glade tutorials .

关于python - gtk.Builder() 和多个空地文件中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2129369/

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