我正在研究一个项目,我想从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,我不知道如何解决这个问题。有人可以给我一个有效的例子吗?
关心奥斯卡
答案 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 。它为您提供了自动绑定到数据库内容的树模型。