如何在 TKINTER Treeview GUI 上统计和显示多行不同的列?

How to count and display multiple rows of different column on TKINTER Treeview GUI?

我的程序需要计算并显示 Tkinter Treeview 库存中可用资产的数量。我在 GUI(最后一张图片)上打印设备类型列的方法是使用 EQUIPMENT TYPE 查询中的 SELECT,该查询列出了 GUI 上显示的设备类型 table 的 11 行。随后,我需要打印每种设备类型的总数、不可用和可用项目。例如,如果共有 10 个 INTEGRATED PANEL,则 3 个可用,7 个不可用。实现此目标最简单有效的方法是什么?下面的代码片段用于将设备类型插入 GUI.It 更容易列出设备类型,因为它只是 table 中的一列。对于可用性,我无法想象有更简单的方法来做到这一点。谢谢。

command = "SELECT `Equipment Type` FROM `Equipment Types`"
mycursor.execute(command)
results = mycursor.fetchall()

for i in range(len(results)):
  results[i] = list(results[i])

  tree.insert("", "end", str(results[i][0]), text = str(results[i][0]), tag = [[i][0]], open = TRUE)

def refresh_clicked(self):
        self.destroy()
        self.__init__()
        
        button_refresh = tk.Button(topframe, text = "Refresh", state = NORMAL, command = self.timed_refresh)
        button_refresh.grid(row = 1, column = 2, sticky = W, padx = 5, pady = 2)

你可以使用SQL得到你想要的:

command = """
SELECT
  et.`Equipment Type`,
  COUNT(i.`Equipment Type`) Total,
  SUM(IF(`Status`="Unavailable",1,0)) Unavailable,
  SUM(IF(`Status`="Available",1,0)) Available
FROM `Equipment Types` et
LEFT JOIN Inventory i ON et.`Equipment Type` = i.`Equipment Type`
GROUP BY 1
ORDER BY 1
"""

mycursor.execute(command)

for row in mycursor:
    tree.insert("", "end", values=row)

鉴于缺少有关您的 SQL table 的详细信息,以下是解决方案的“最佳猜测”,用于从 table.

SELECT 
 Inventory.'Equipment Type',
 COUNT(Inventory.'Equipment Type') AS 'Total',
 COUNT(case Inventory.Available when 'Available' then 1 else null end) AS 'Available',
 COUNT(case Inventory.Available when 'Unavailable' then 1 else null end) AS 'Unavailable' 
FROM 
 Inventory
GROUP BY 
 Inventory.'Equipment Type';

用我的小假数据集这个returns

Equipment Type |  Total | Available | Unavailable
     A         |    2   |     1     |   1
     B         |    2   |     2     |   0