简体   繁体   English

使用Python的Glade 3无法正常工作

[英]Glade 3 with Python not working

I made a nice interface with Glade 3 for Windows 7 (v3.14.2) It should run with Python for Ubuntu 12.04 我为Windows 7(v3.14.2)的Glade 3制作了一个不错的界面,该界面应与适用于Ubuntu 12.04的Python一起运行

So i made this program: 所以我做了这个程序:

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import gtk
import gtk.glade

class HellowWorldGTK:

        def __init__(self):
                self.gladefile = "userInput.glade" 
                self.glade = gtk.Builder()
                self.glade.add_from_file(self.gladefile)
                self.glade.connect_signals(self)
                self.glade.get_object("mainWindow").show_all()

        def on_MainWindow_delete_event(self, widget, event):
                gtk.main_quit()

if __name__ == "__main__":
        try:
                a = HellowWorldGTK()
                gtk.main()
        except KeyboardInterrupt:
                pass

and, when running in Ubuntu, this is what the console says: 并且,在Ubuntu中运行时,控制台将显示以下内容:

aimc@ubuntu:~/Desktop$ python main_ex.py 
main_ex.py:13: GtkWarning: Unknown property: GtkWindow.margin-left
  self.glade.add_from_file(self.gladefile)
main_ex.py:13: GtkWarning: Unknown property: GtkWindow.margin-right
  self.glade.add_from_file(self.gladefile)
main_ex.py:13: GtkWarning: Unknown property: GtkWindow.margin-top
  self.glade.add_from_file(self.gladefile)
main_ex.py:13: GtkWarning: Unknown property: GtkWindow.margin-bottom
  self.glade.add_from_file(self.gladefile)
main_ex.py:13: Warning: cannot create instance of abstract (non-instantiatable) type `GtkPaned'
  self.glade.add_from_file(self.gladefile)
Segmentation fault (core dumped)

What is wrong with my .glade file? .glade文件怎么了? Should I use other Glade version? 我应该使用其他Glade版本吗? I would really appreciate your help. 我将衷心感谢您的帮助。

Glade File (a fragment of it as stackoverflow won't let me put it all): Glade File(作为stackoverflow的一部分,我无法一一列举):

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <!-- interface-requires gtk+ 3.0 -->
  <object class="GtkAction" id="action1"/>
  <object class="GtkAction" id="action2"/>
  <object class="GtkActionGroup" id="actiongroup1"/>
  <object class="GtkImage" id="image1">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="stock">gtk-go-forward</property>
  </object>
  <object class="GtkListStore" id="liststore1"/>
  <object class="GtkWindow" id="mainWindow">
    <property name="can_focus">False</property>
    <property name="margin_left">3</property>
    <property name="margin_right">3</property>
    <property name="margin_top">3</property>
    <property name="margin_bottom">3</property>
    <child>
      <object class="GtkPaned" id="paned1">
        <property name="visible">True</property>
        <property name="can_focus">True</property>
        <child>
          <object class="GtkPaned" id="paned2">
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <child>
              <object class="GtkBox" id="box1">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="hexpand">True</property>
                <property name="resize_mode">immediate</property>
                <property name="orientation">vertical</property>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <object class="GtkButton" id="btnDrop">
                    <property name="label" translatable="yes">Drop</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                    <signal name="clicked" handler="clicked_drop" swapped="no"/>
                  </object>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">1</property>
                  </packing>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <object class="GtkButton" id="btnReward">
                    <property name="label" translatable="yes">Reward</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                    <signal name="clicked" handler="clicked_reward" swapped="no"/>
                  </object>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">3</property>
                  </packing>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <object class="GtkButton" id="btnOpen">
                    <property name="label" translatable="yes">Open Valve</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                  </object>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">5</property>
                  </packing>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <object class="GtkButton" id="btnClose">
                    <property name="label" translatable="yes">Close Valve</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                  </object>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">7</property>
                  </packing>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <object class="GtkButton" id="btnStart">
                    <property name="label" translatable="yes">Start / Stop training</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                  </object>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">9</property>
                  </packing>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <object class="GtkButton" id="btnPause">
                    <property name="label" translatable="yes">Pause / Resume Training</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                  </object>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">11</property>
                  </packing>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <object class="GtkButton" id="btnExit">
                    <property name="label" translatable="yes">Exit</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                    <signal name="clicked" handler="gtk.main_quit" swapped="no"/>
                  </object>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="position">13</property>
                  </packing>
                </child>
              </object>
              <packing>

您可能在Windows和Ubuntu上具有不同的,不兼容的GTK版本。

我再次尝试了Glade3.8(可在官方网站上找到较早的版本),它与上面编写的代码兼容,并且还提供了功能更丰富的RAD工具。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM