【问题标题】:How to insert records from a mysql query to a wxPython listCtrl widget?如何将 mysql 查询中的记录插入 wxPython listCtrl 小部件?
【发布时间】:2013-02-01 06:40:14
【问题描述】:

我有一个简单的代码,需要正确输出我想从 mysql 查询中提取的行。请在下面查看我的代码。不知道真正的问题是什么。我试过在网上搜索,但没有运气。

sql="""SELECT * FROM users ORDER BY fname ASC LIMIT 5"""        
    cr.execute(sql)
    rows = cr.fetchall()

    self.list=wx.ListCtrl(panel,pos=(20,100),size=(355,130),
                          style=wx.LC_REPORT|wx.SUNKEN_BORDER|wx.LC_HRULES|wx.LC_VRULES)

    self.list.InsertColumn(0, 'Name')
    self.list.InsertColumn(1, 'Email')
    self.list.InsertColumn(2, 'Contact Number', width=150)

    self.list.SetColumnWidth(0, 100)
    self.list.SetColumnWidth(1, 200)
    self.list.SetColumnWidth(2, 100)

    n=0
    for r in rows:
        self.list.InsertStringItem()(n, r[0])
        self.list.SetStringItem(n, 1, r[1])
        self.list.InsertItem(n, 2, r[2])
        n+=1

我收到错误“return controls.ListCtrl_InsertStringItem(*args, **kwargs) 类型错误:需要字符串或 Unicode 类型”。非常感谢任何人的帮助。 谢谢

【问题讨论】:

  • 您的代码中有过多的)( self.list.InsertStringItem()(n, r[0])

标签: mysql wxpython listctrl


【解决方案1】:

在 for 循环中,您只需对除第一列之外的每一列都使用 SetStringItem 命令。所以应该是 self.list.SetStringItem (n, 2, r[2])

而不是 "self.list.InsertItem(n, 2, r[2])"

就我个人而言,我会使用 ObjectListView 而不是 ListCtrl。我在这里写了一篇关于将它与 SQLAlchemy 和 SQLite 一起使用的很好的教程:

http://www.blog.pythonlibrary.org/2011/11/10/wxpython-and-sqlalchemy-an-intro-to-mvc-and-crud/

这可能对你也有帮助。

【讨论】:

    猜你喜欢
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多