0

我有一个简单的代码,需要正确输出我想从 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) TypeError: String or Unicode type required”。非常感谢任何人的帮助。谢谢

4

1 回答 1

0

在 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/

这可能对你也有帮助。

于 2013-02-01T22:03:33.443 回答