listctrl未正确填充

2024-06-16 11:20:08 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我设法以给定的顺序获取项目列表,以便正确地填充数据库。当转换项目以填充显示订单中包含的项目的listctrl小部件时。。。。。。。我明白了: enter image description here

左侧窗口显示添加第一项时发生的情况。。。。右边的窗户就是我的问题所在。它实际上覆盖了第一项的文本,并添加了一个空白列。。。。但是价格加起来是正确的,所有的项目都被正确地添加到sql数据库中。。。所以我的问题在于如何填充我的列表

下面显示的代码是填充前面显示的列表控制的函数。。。我好像找不到我哪里出错了。。。有什么想法吗?在

重新启动列表的代码

    def refresh_list2(self, event):
          """Place the names of each ItemEntry into the list"""

        index = 0
        self.entrydict = {}
        self.list2.DeleteAllItems()
        for entry in self.ordite.list_entries():
                if entry.Order_ID == self.entry.Order_ID:
                   self.list2.InsertStringItem(index,self.entry.Order_ID)
                   self.list2.SetStringItem(index,1,self.entryit.Item_ID)
                   self.list2.SetStringItem(index,2,str(self.entryit.Item_Price))
                   self.list2.SetStringItem(index,3,str(self.entryit.Item_Qty))
                   self.entrydict[index] = entry
                   index += 1

将项目插入数据库的代码

^{pr2}$

仍在考虑在后端创建一个函数,该函数根据给定的order\u ID存储item对象的筛选列表


Tags: the项目函数代码selfid数据库列表
1条回答
网友
1楼 · 发布于 2024-06-16 11:20:08

哦,wx.ListCtrl的乐趣。;—)

我花了很多时间与这些问题做斗争,然后围绕它编写一个包装器类,使之大大减轻痛苦。在

你的refresh_list2()代码有几个问题。。。在

如果你想把

其次,InsertStringItem()将返回它插入该项的索引,因此您必须在随后对SetStringItem()的任何调用中使用该值。在

试试这样的。。。在

def refresh_list2(self, event):
      """Place the names of each ItemEntry into the list"""

    self.entrydict = {}
    self.list2.DeleteAllItems()

    for entry in self.ordite.list_entries():
        if entry.Order_ID == self.entry.Order_ID:
           index = self.list2.InsertStringItem(sys.maxint, self.entry.Order_ID)
           self.list2.SetStringItem(index, 1, self.entryit.Item_ID)
           self.list2.SetStringItem(index, 2, str(self.entryit.Item_Price))
           self.list2.SetStringItem(index, 3, str(self.entryit.Item_Qty))
           self.entrydict[index] = entry

…这应该可以获得所需的结果,但是如果随后从列表中删除某个项,self.entrydict可能会出现问题,因为索引值可能会更改。在


更新

不知道你在做什么,但是下面这个独立的例子对我有用。。。在

^{pr2}$

更新2

啊。我想您是想插入本地entry变量中的项,而不是实例属性。。。在

def refresh_list2(self, event):
      """Place the names of each ItemEntry into the list"""

    self.entrydict = {}
    self.list2.DeleteAllItems()

    for entry in self.ordite.list_entries():
        if entry.Order_ID == self.entry.Order_ID:
           index = self.list2.InsertStringItem(sys.maxint, entry.Order_ID)
           self.list2.SetStringItem(index, 1, entry.Item_ID)
           self.list2.SetStringItem(index, 2, str(entry.Item_Price))
           self.list2.SetStringItem(index, 3, str(entry.Item_Qty))
           self.entrydict[index] = entry

相关问题 更多 >