3

我想使用 Glade 设计一个 GUI,并从中生成 python 代码。问题是,我找不到 GladeGen。有谁知道在哪里可以下载?

4

4 回答 4

2

为什么不使用 GUI 设计器,例如 Anjuta 或 Glade 程序,将其写出来以用于glade XML,并使用 libglade 的 python 绑定来使用 XML 文件……有点像 XAML。

编辑,添加了 Glade.xml->python 的一些链接

http://glc.sourceforge.net/
http://www.pygtk.org/(可能有帮助)

于 2009-06-06T16:23:17.350 回答
2

谷歌是你的朋友。

http://www.linuxjournal.com/article/7558

于 2009-06-06T18:23:09.883 回答
0

我的建议是 - 不要生成代码。Glade 3.6 现在可以保存为 GtkBuilder 格式 (xml),可以在您的代码中加载。这更容易处理!

http://www.pygtk.org/pygtk2reference/class-gtkbuilder.html

于 2009-06-13T02:16:26.577 回答
0

它似乎已被复制到启动板中的此 Bazaar 存储库:

launchpad.net/~wattazoum: gladegen: 代码: Python 开发工具

(直接下载 tarball - 用于下面的片段)

此外,GladeGen 的作者对文章的链接:

请注意,在 Glade 3.8.0 中,您可以将文件导出为LibgladeGtkBuilder; 我做了一个小测试,表明您应该将文件保存为 Libglade;GladeGen 可以同时解析:

$ python2.7 GladeGen.py /tmp/test-libglade.glade TestMe TestMe
funcs
main <function main at 0xb72d98b4>
search_file <function search_file at 0xb72d964c>

classes
GladeWindow <class 'GladeWindow.GladeWindow'>
TestMe <class 'TestMe.TestMe'>

methods
('GladeWindow', '__init__')
('GladeWindow', 'hide')
('GladeWindow', 'set_callback_function')
('GladeWindow', 'set_search_path')
('GladeWindow', 'set_top_window')
('GladeWindow', 'show')
('TestMe', '__init__')
('TestMe', 'hide')
('TestMe', 'init')
('TestMe', 'set_callback_function')
('TestMe', 'set_search_path')
('TestMe', 'set_top_window')
('TestMe', 'show')

widgets
('GtkWindow', 'window1')
('GtkHBox', 'hbox1')
('GtkScrolledWindow', 'scrolledwindow1')

handlers

$ python2.7 GladeGen.py /tmp/test-gtkbuilder.glade TestMe2 TestMe2
funcs
main <function main at 0x95778ec>
search_file <function search_file at 0x9577684>

classes
GladeWindow <class 'GladeWindow.GladeWindow'>
TestMe2 <class 'TestMe2.TestMe2'>

methods
('GladeWindow', '__init__')
('GladeWindow', 'hide')
('GladeWindow', 'set_callback_function')
('GladeWindow', 'set_search_path')
('GladeWindow', 'set_top_window')
('GladeWindow', 'show')
('TestMe2', '__init__')
('TestMe2', 'hide')
('TestMe2', 'init')
('TestMe2', 'set_callback_function')
('TestMe2', 'set_search_path')
('TestMe2', 'set_top_window')
('TestMe2', 'show')

widgets

handlers

但是,如果您尝试运行导出的 python 代码,则只有第一个 ( python TestMe.py) 会运行;而第二个 gtkbuilder 将失败:

$ python2.7 TestMe2.py

(TestMe2.py:24883): libglade-WARNING **: Expected <glade-interface>.  Got <interface>.

(TestMe2.py:24883): libglade-WARNING **: did not finish in PARSER_FINISH state
Traceback (most recent call last):
  File "TestMe2.py", line 66, in <module>
    main(sys.argv)
  File "TestMe2.py", line 59, in main
    w = TestMe2()
  File "TestMe2.py", line 37, in __init__
    self.init()
  File "TestMe2.py", line 52, in init
    GladeWindow.__init__(self, filename, top_window, widget_list, handlers)
  File "/path/to/src/wattazoum_pydevtools_gladegen/src/GladeWindow.py", line 77, in __init__
    self.xml = gtk.glade.XML(fname)
RuntimeError: could not create GladeXML object

好吧,我很高兴我仍然可以使用它,因为显然 Glade 不可能生成/导出/创建/另存为 Python 代码...


...编辑:虽然,应该注意的是,出口只是:

def init(self):
  filename = '/tmp/test-libglade.glade'
  widget_list = [
          'window1',
          'hbox1',
          'scrolledwindow1',
          ]
  handlers = [
          ]
  top_window = 'window1'
  GladeWindow.__init__(self, filename, top_window, widget_list, handlers)

...也就是说,它只是与 glade 文件的接口(几乎与起始教程http://www.pygtk.org/articles/pygtk-glade-gui/Creating_a_GUI_using_PyGTK_and_Glade.htm中的一样),实际上并没有创建我期望的python代码,如翻译的代码,如:

self.window1 = gtk.Window(gtk.WINDOW_TOPLEVEL)

......等等......这是一种耻辱,因为那是我一直在寻找的东西:)

于 2014-06-29T19:36:40.607 回答