使用 SQL 值填充 QCombobox

Populate QCombobox with SQL Values

我试图用 SQL table 中的值填充 qcombobox,但我得到

TypeError: addItems(self, Iterable[str]): argument 1 has unexpected type 'function'

我的密码是

self.building = QComboBox()
self.building.addItems(lambda: self.Buildingcombobox())

def Buildingcombobox(self):
    conn = pyodbc.connect(<connection>)
    cursor = conn.cursor()
    cursor.execute("SELECT building, building_id FROM buildings")
    rows = cursor.fetchall()

    for row in rows:
        self.building.addItem(str(row[0]), row[1])
        print(row)
    
    conn.commit()
    conn.close()

我选择建筑物和 building_id 因为我只想 building_id 存储在 table 名员工中。

QComboBox() 对象的 addItems() 方法需要一个 Iterable[Str] 参数,而不是向小部件添加项目的函数。

(对于您引用的 SQL,您不需要 commit 因为您不是 INSERTing、DELETEing 或 UPDATEing).

我会完全删除对 addItems() 的调用,并使用您的 Buildcombobox 函数(没有 commit),因为 addItem() 调用正在执行您需要的操作。