首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyGI窗口不被破坏

PyGI窗口不被破坏
EN

Stack Overflow用户
提问于 2016-04-23 19:19:33
回答 1查看 46关注 0票数 0

这是我的班级,它代表的是优先权。它从‘Preences.glade’加载林隙布局。当相应的按钮被激活时,将调用btn_cancel_clicked_cb和btn_ok_clicked_cb。但是self.destroy()什么也不做。有人能解释一下在点击按钮后如何销毁这个对话框吗?

代码语言:javascript
复制
from gi.repository import Gtk
from common import Prefs

class ViewPrefs(Gtk.Dialog):
    def __init__(self):
        Gtk.Dialog.__init__(self)
        self.builder = Gtk.Builder()
        self.builder.add_from_file("preferences.glade")
        self.builder.connect_signals(self)

        self.rb_input=self.builder.get_object("rb_input")
        self.rb_select=self.builder.get_object("rb_select")

    def run(self, *args):
        window = self.builder.get_object("window_prefs")
        window.show()
        window.connect('destroy', Gtk.main_quit)
        Gtk.main()

    def register_observer(self, controller):
        self.controller = controller

    def btn_cancel_clicked_cb(self,widget):
        self.destroy()

    def btn_ok_clicked_cb(self,widget):
        active = [r for r in self.rb_input.get_group() if r.get_active()][0]
        input_type=active.get_label().lower()
        self.controller.set_prefs(Prefs(input_type=input_type))
        self.destroy()

它从主窗口开始,像这样:

代码语言:javascript
复制
   prefsview=ViewPrefs()
   prefsview.register_observer(self.controller)
   prefsview.run()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-25 18:57:26

self不是self.window。实际上,对于您的情况,子类Gtk.Dialog是无用的,因为从未使用self的对话框部分!如果您需要一个新的足够版本的GTK+,您可以将对话框创建为复合小部件模板,并以这种方式构建类(我不知道如何使用Python来实现这一点;对不起)。否则,去掉子类并调用window.destroy() (如果window确实是一个Gtk.Dialog,则调用self.run()中的window.run() )。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36815331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档