Python + pygtk生成数据库中的复选框表

时间:2012-11-11 19:19:45

标签: python mysql checkbox gtk pygtk

我正在研究一个项目,我想从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,我不知道如何解决这个问题。有人可以给我一个有效的例子吗?

关心奥斯卡

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

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