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 に答える