2

我正在做一个项目,我想从 MySQL 数据库加载数据并将其显示在 PyGTK 应用程序中,以便于概览和配置。我的目标是让程序根据数据库内容自动添加新行,即。如果我向数据库添加一个新命令,我不需要对我的 GTK 应用程序进行任何更改。

这是我的测试数据库:

+----+----------+---------+----+--------+
| id | name     | enabled | op | desc   |
+----+----------+---------+----+--------+
|  1 | !help    |       1 |  0 | blabla |
|  2 | !version |       1 |  1 | blabla |
|  3 | !tp      |       0 |  1 | blabla |
+----+----------+---------+----+--------+

我想(动态)创建一个看起来像这样的 GTK 应用程序:http: //i.imgur.com/EMhkz.png

我以前有一些使用 python 的经验,但没有那么多 GTK,我不确定如何解决这个问题。有人可以给我一个工作的例子吗?

问候奥斯卡

4

2 回答 2

1

你可以试试这个。我会让你填写细节,比如 MySQL 的东西。这里重要的部分,使小部件看起来均匀分布是参数

gtk.HBox(homogeneous=True)

否则他们会到处都是,只占用他们需要展示自己的空间。

希望这就是你所追求的。

import pygtk
pygtk.require20()
import gtk

data = [['1', '!help',    '1', '0', 'blabla'], 
        ['2', '!version', '1', '1', 'blabla'], 
        ['3', '!tp',      '0', '1', 'blabla']]

def main():
    window = gtk.Window()
    window.set_title('Dynamic controls')
    window.connect("delete_event", gtk.main_quit)

    vbox = gtk.VBox()
    window.add(vbox)

    for row in data:
        hbox = gtk.HBox(homogeneous=True)
        hbox.pack_start(gtk.Label(row[1]))
        enabled_checkbox = gtk.CheckButton('Enabled')
        enabled_checkbox.set_active(row[2] is '1')
        hbox.pack_start(enabled_checkbox)
        op_checkbox = gtk.CheckButton('OP')
        op_checkbox.set_active(row[3] is '1')
        hbox.pack_start(op_checkbox)
        hbox.pack_start(gtk.Label(row[4]))
        vbox.pack_start(hbox)


    window.show_all()
    gtk.main()

if __name__ == '__main__':
    main()
于 2012-11-11T22:51:30.043 回答
1

使用libgda。它为您提供自动绑定到数据库内容的树模型。

于 2012-11-14T10:49:35.010 回答