Чисто технический ответ: вы хотите setattr(obj, name, value)
:
setattr(self, "tb_points%i" % i, QtGui.QMainWindow())
, но это хорошо известный антипаттерн (как вы собираетесь использовать атрибуты, имя которых вы не знаете?),таким образом, правильным дизайном было бы использование списка или текста, то есть:
self.dyn_windows = []
# unrelated : python "for" loops are of the "foreach" kind
for tab_id in tables:
# ...
# for each tab_id, we store a dict referencing the three related windows
self.dyn_windows.append({
"tb_points": QtGui.QMainWindow(),
"tv_points": QtGui.QTableView(),
"tv_model": QtGui.QStandardItemModel(len(q), 7, self)
})
Также (не связанного, но),
1 / правильное использование db-api is:
cursor = conn.cursor()
# nb: the exact placeholder depends on your db vendor
cursor.execute("select * from xxxx where tab_id=%", [tab_id])
2 / Я не могу привести рабочий пример, не зная вашей схемы БД и что именно вы пытаетесь сделать, но если то, что вы хотите, это список "table_id"(или это" tab_id "???): количество точек", конечно, есть гораздо лучший способ использования агрегаций, то есть "select tab_id, count(*) from points group by tab_id"