Необходимо создать ещё один файл в проекте и туда перенести определённый код из другого файла python
class Lodgers перенести в новый файл GetRooms.py. В этом классе надо запомнить model, а tableView_1 не в нем, а в окне. Также нужно прочитать записи в список, или сразу в методе getRooms сделать обход модели и вычисление занятых мест. Этот метод отлаживается отдельно (можно напечатать полученный список), а потом только связывать с графикой.
файл main.py:
# -*- coding: utf-8 -*-
import sys
import mainWindow
from PyQt5 import QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtSql import QSqlDatabase
from PyQt5.QtSql import QSqlTableModel
from RoomWindow import Ui_RoomWindow
from lodgers import Ui_lodgers
# новый класс
class Lodgers(QtWidgets.QMainWindow, Ui_lodgers):
def __init__(self, parent=None):
super(Lodgers, self).__init__(parent)
self.setupUi(self)
sdb = QSqlDatabase.addDatabase('QSQLITE')
sdb.setDatabaseName('baza.db')
sdb.open()
model = QSqlTableModel(db=sdb)
model.setTable("users")
model.setEditStrategy(QSqlTableModel.OnFieldChange)
model.select()
self.tableView_1.setModel(model)
class ExampleApp(QtWidgets.QMainWindow, mainWindow.Ui_MainWindow):
def __init__(self):
super().__init__()
self.scene = QtWidgets.QGraphicsScene()
self.setupUi(self)
self.pushButton_5.clicked.connect(self.openRoomWindow)
self.pushButton_7.clicked.connect(self.openlodgers)
# Функция закрытия главного окна по кнопке Выход
self.pushButton_4.clicked.connect(self.close)
self.scene.addPixmap(QtGui.QPixmap("section_sketch.png"))
self.pushButton_8.clicked.connect(self.drowRooms)
self.graphicsView.setScene(self.scene)
self.lodgers = Lodgers()
self.lodgers.pushButton_8.clicked.connect(self.returnMainWindow1)
self.rоом_beds = []
self.rоом_rect = {
'131': 0,
'132': 1,
'133': 2,
'134': 3,
'135': 4,
'136': 5,
'137': 6,
'138': 7,
}
# Метод для отрисовки
def drowRooms(self):
self.Rooms = []
self.Rooms.append((
# Рисование прямоугольников для 131 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя через список)
self.scene.addRect(195, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1311
self.scene.addRect(240, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1312
self.scene.addRect(195, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1313
self.scene.addRect(240, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1314
self.Rooms.append((
# Рисование прямоугольников для 132 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(330, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1321
self.scene.addRect(375, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1322
self.scene.addRect(330, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1323
self.scene.addRect(375, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1324
self.Rooms.append((
# Рисование прямоугольников для 133 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(465, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1331
self.scene.addRect(510, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1332
self.scene.addRect(465, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1333
self.scene.addRect(510, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1334
self.Rooms.append((
# Рисование прямоугольников для 134 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(595, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1341
self.scene.addRect(640, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1342
self.scene.addRect(595, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1343
self.scene.addRect(640, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1344
self.Rooms.append((
# Рисование прямоугольников для 135 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(595, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1351
self.scene.addRect(640, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1352
self.scene.addRect(595, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1353
self.scene.addRect(640, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1354
self.Rooms.append((
# Рисование прямоугольников для 136 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(465, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1361
self.scene.addRect(510, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1362
self.scene.addRect(465, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1363
self.scene.addRect(510, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1364
self.Rooms.append((
# Рисование прямоугольников для 137 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(330, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1371
self.scene.addRect(375, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1372
self.scene.addRect(330, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1373
self.scene.addRect(375, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1374
self.Rooms.append((
# Рисование прямоугольников для 138 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(195, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1381
self.scene.addRect(240, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1382
self.scene.addRect(195, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1383
self.scene.addRect(240, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1384
self.rоом_beds = []
model = self.lodgers.tableView_1.model()
for row in range(model.rowCount()):
if model.data(model.index(row, 2)) == 1:
rоом_bed = str(model.data(model.index(row, 1)))[:3], str(model.data(model.index(row, 1)))[3]
self.rоом_beds.append(rоом_bed)
for k, v in self.rоом_beds:
self.Rooms[self.rоом_rect[k]][int(v)].setBrush(QtGui.QBrush(Qt.red))
# Функция перехода на окно Комнаты
def openRoomWindow(self):
self.RoomWindow = QtWidgets.QMainWindow()
ui = Ui_RoomWindow()
ui.setupUi(self.RoomWindow)
ui.pushButton_6.clicked.connect(self.returnMainWindow)
self.hide() # для сворачивания предыдущего окна
self.RoomWindow.show()
def openlodgers(self):
self.lodgers = QtWidgets.QMainWindow()
ui = Ui_lodgers()
ui.setupUi(self.lodgers)
ui.pushButton_8.clicked.connect(self.returnMainWindow1)
sdb = QSqlDatabase.addDatabase('QSQLITE')
sdb.setDatabaseName('baza.db')
sdb.open()
model = QSqlTableModel(db=sdb)
model.setTable("users")
model.setEditStrategy(QSqlTableModel.OnFieldChange)
model.select()
ui.tableView_1.setModel(model)
self.hide() # для сворачивания предыдущего окна
self.lodgers.show()
# Функция для возвращения на главное окно (Из окна комнаты) по кнопке Назад
def returnMainWindow(self):
self.RoomWindow.close()
self.show()
# Функция для возвращения на главное окно (Из окна проживающие) по кнопке Назад
def returnMainWindow1(self):
self.lodgers.close()
self.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = ExampleApp()
window.show()
sys.exit(app.exec_())
файл mainWindow.py:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mainWindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1087, 593)
MainWindow.setMinimumSize(QtCore.QSize(1087, 593))
MainWindow.setMaximumSize(QtCore.QSize(1087, 593))
MainWindow.setWindowTitle("Просмотр Плана Секции")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_4.setGeometry(QtCore.QRect(900, 530, 161, 41))
self.pushButton_4.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";")
self.pushButton_4.setObjectName("pushButton_4")
self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_5.setGeometry(QtCore.QRect(860, 164, 209, 40))
self.pushButton_5.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";")
self.pushButton_5.setObjectName("pushButton_5")
self.pushButton_8 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_8.setEnabled(True)
self.pushButton_8.setGeometry(QtCore.QRect(860, 280, 209, 40))
self.pushButton_8.setAutoFillBackground(False)
self.pushButton_8.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";")
self.pushButton_8.setObjectName("pushButton_8")
self.pushButton_7 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_7.setGeometry(QtCore.QRect(860, 220, 209, 40))
self.pushButton_7.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";")
self.pushButton_7.setObjectName("pushButton_7")
self.graphicsView = QtWidgets.QGraphicsView(self.centralwidget)
self.graphicsView.setGeometry(QtCore.QRect(30, 20, 775, 535))
self.graphicsView.setObjectName("graphicsView")
'''''
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(650, 0, 71, 21))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName("label")
'''''
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(230, 17, 105, 21))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(360, 17, 105, 21))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(495, 17, 105, 21))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(625, 17, 105, 21))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_4.setFont(font)
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(625, 440, 105, 21))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_5.setFont(font)
self.label_5.setObjectName("label_5")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(495, 440, 105, 21))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_6.setFont(font)
self.label_6.setObjectName("label_6")
self.label_7 = QtWidgets.QLabel(self.centralwidget)
self.label_7.setGeometry(QtCore.QRect(360, 440, 105, 21))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_7.setFont(font)
self.label_7.setObjectName("label_7")
self.label_8 = QtWidgets.QLabel(self.centralwidget)
self.label_8.setGeometry(QtCore.QRect(230, 440, 105, 21))
font = QtGui.QFont()
font.setPointSize(9)
font.setBold(True)
font.setWeight(75)
self.label_8.setFont(font)
self.label_8.setObjectName("label_8")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
self.pushButton_4.setText(_translate("MainWindow", "Выход"))
self.pushButton_5.setText(_translate("MainWindow", "Комнаты"))
self.pushButton_8.setText(_translate("MainWindow", "Просмотр"))
self.pushButton_7.setText(_translate("MainWindow", "Проживающие"))
self.label.setText(_translate("MainWindow", "Комната 131"))
self.label_2.setText(_translate("MainWindow", "Комната 132"))
self.label_3.setText(_translate("MainWindow", "Комната 133"))
self.label_4.setText(_translate("MainWindow", "Комната 134"))
self.label_5.setText(_translate("MainWindow", "Комната 135"))
self.label_6.setText(_translate("MainWindow", "Комната 136"))
self.label_7.setText(_translate("MainWindow", "Комната 137"))
self.label_8.setText(_translate("MainWindow", "Комната 138"))
файл RoomWindow.py:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'RoomWindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_RoomWindow(object):
def setupUi(self, RoomWindow):
RoomWindow.setObjectName("RoomWindow")
RoomWindow.resize(1087, 593)
RoomWindow.setMinimumSize(QtCore.QSize(1087, 593))
RoomWindow.setMaximumSize(QtCore.QSize(1087, 593))
self.centralwidget = QtWidgets.QWidget(RoomWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_6.setEnabled(True)
self.pushButton_6.setGeometry(QtCore.QRect(10, 530, 209, 40))
self.pushButton_6.setAutoFillBackground(False)
self.pushButton_6.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";")
self.pushButton_6.setObjectName("pushButton_6")
self.tableView = QtWidgets.QTableView(self.centralwidget)
self.tableView.setGeometry(QtCore.QRect(10, 20, 551, 411))
self.tableView.setObjectName("tableView")
RoomWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(RoomWindow)
QtCore.QMetaObject.connectSlotsByName(RoomWindow)
def retranslateUi(self, RoomWindow):
_translate = QtCore.QCoreApplication.translate
RoomWindow.setWindowTitle(_translate("RoomWindow", "Комнаты"))
self.pushButton_6.setText(_translate("RoomWindow", "Назад"))
файл lodgers.py:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'lodgers.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_lodgers(object):
def setupUi(self, lodgers):
lodgers.setObjectName("lodgers")
lodgers.resize(1087, 593)
lodgers.setMinimumSize(QtCore.QSize(1087, 593))
lodgers.setMaximumSize(QtCore.QSize(1087, 593))
self.centralwidget = QtWidgets.QWidget(lodgers)
self.centralwidget.setObjectName("centralwidget")
self.pushButton_8 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_8.setEnabled(True)
self.pushButton_8.setGeometry(QtCore.QRect(10, 530, 209, 40))
self.pushButton_8.setAutoFillBackground(False)
self.pushButton_8.setStyleSheet("font: 75 14pt \"MS Shell Dlg 2\";")
self.pushButton_8.setObjectName("pushButton_8")
self.tableView_1 = QtWidgets.QTableView(self.centralwidget)
self.tableView_1.setGeometry(QtCore.QRect(10, 20, 551, 411))
self.tableView_1.setObjectName("tableView_1")
lodgers.setCentralWidget(self.centralwidget)
self.retranslateUi(lodgers)
QtCore.QMetaObject.connectSlotsByName(lodgers)
def retranslateUi(self, lodgers):
_translate = QtCore.QCoreApplication.translate
lodgers.setWindowTitle(_translate("lodgers", "Проживающие"))
self.pushButton_8.setText(_translate("lodgers", "Назад"))
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
я отметил для вас строки. в которые внес изменения. Публикую только измененные модули.
main.py
import sys
#- import mainWindow
from mainWindow import Ui_MainWindow # Ui_MainWindow
from PyQt5 import QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtSql import QSqlDatabase
from PyQt5.QtSql import QSqlTableModel
from RoomWindow import Ui_RoomWindow
#- from lodgers import Ui_lodgers
# новый класс
from GetRooms import Lodgers # +++
'''
class Lodgers(QtWidgets.QMainWindow, Ui_lodgers):
def __init__(self, parent=None):
super(Lodgers, self).__init__(parent)
self.setupUi(self)
sdb = QSqlDatabase.addDatabase('QSQLITE')
sdb.setDatabaseName('baza_1214255.db') # baza.db
sdb.open()
model = QSqlTableModel(db=sdb)
model.setTable("users")
model.setEditStrategy(QSqlTableModel.OnFieldChange)
model.select()
self.tableView_1.setModel(model)
'''
#class ExampleApp(QtWidgets.QMainWindow, mainWindow.Ui_MainWindow):
class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow): # Ui_MainWindow
def __init__(self):
super().__init__()
self.scene = QtWidgets.QGraphicsScene()
self.setupUi(self)
#+++ vvv
self.lodgers = Lodgers() # !!!
self.lodgers.pushButton_8.clicked.connect(self.returnMainWindow1)
self.rоом_beds = []
self.rоом_rect = {
'131': 0,
'132': 1,
'133': 2,
'134': 3,
'135': 4,
'136': 5,
'137': 6,
'138': 7,
}
#+++ ^^^
self.pushButton_5.clicked.connect(self.openRoomWindow)
self.pushButton_7.clicked.connect(self.openlodgers)
# Функция закрытия главного окна по кнопке Выход
self.pushButton_4.clicked.connect(self.close)
self.scene.addPixmap(QtGui.QPixmap("im.png")) # section_sketch.png установите свое !!!
self.pushButton_8.clicked.connect(self.drowRooms)
self.graphicsView.setScene(self.scene)
''' пуренес выше !!!
self.lodgers = Lodgers()
self.lodgers.pushButton_8.clicked.connect(self.returnMainWindow1)
self.rоом_beds = []
self.rоом_rect = {
'131': 0,
'132': 1,
'133': 2,
'134': 3,
'135': 4,
'136': 5,
'137': 6,
'138': 7,
}
'''
# Метод для отрисовки
def drowRooms(self):
if not self.lodgers.rоом_beds: # +++
msg = QtWidgets.QMessageBox.information(
self,
'Message',
f'Просматривать рановать. \n'
f'Нажмите кнопку `Проживающие` и выполните необходимые корректировки.'
)
return
self.Rooms = []
self.Rooms.append((
# Рисование прямоугольников для 131 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя через список)
self.scene.addRect(195, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1311
self.scene.addRect(240, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1312
self.scene.addRect(195, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1313
self.scene.addRect(240, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1314
self.Rooms.append((
# Рисование прямоугольников для 132 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(330, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1321
self.scene.addRect(375, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1322
self.scene.addRect(330, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1323
self.scene.addRect(375, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1324
self.Rooms.append((
# Рисование прямоугольников для 133 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(465, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1331
self.scene.addRect(510, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1332
self.scene.addRect(465, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1333
self.scene.addRect(510, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1334
self.Rooms.append((
# Рисование прямоугольников для 134 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(595, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1341
self.scene.addRect(640, 40, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1342
self.scene.addRect(595, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1343
self.scene.addRect(640, 85, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1344
self.Rooms.append((
# Рисование прямоугольников для 135 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(595, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1351
self.scene.addRect(640, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1352
self.scene.addRect(595, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1353
self.scene.addRect(640, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1354
self.Rooms.append((
# Рисование прямоугольников для 136 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(465, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1361
self.scene.addRect(510, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1362
self.scene.addRect(465, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1363
self.scene.addRect(510, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1364
self.Rooms.append((
# Рисование прямоугольников для 137 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(330, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1371
self.scene.addRect(375, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1372
self.scene.addRect(330, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1373
self.scene.addRect(375, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1374
self.Rooms.append((
# Рисование прямоугольников для 138 комнаты (обозначения для того чтобы в дальнеёшем присвоить прямоугольникам имя)
self.scene.addRect(195, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1381
self.scene.addRect(240, 320, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1382
self.scene.addRect(195, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)), # 1383
self.scene.addRect(240, 365, 35, 35, pen=QtGui.QPen(Qt.black), brush=QtGui.QBrush(Qt.green)))) # 1384
''' перенес в новый класс !!!
self.rоом_beds = []
model = self.lodgers.tableView_1.model()
for row in range(model.rowCount()):
if model.data(model.index(row, 2)) == 1:
rоом_bed = str(model.data(model.index(row, 1)))[:3], str(model.data(model.index(row, 1)))[3]
self.rоом_beds.append(rоом_bed)
'''
# vvvvvvvvvvvvvvvvvvvvvv <-- список сформированный в новом классе
for k, v in self.lodgers.rоом_beds: # - self.rоом_beds; + self.lodgers.rоом_beds
self.Rooms[self.rоом_rect[k]][int(v)].setBrush(QtGui.QBrush(Qt.red))
# Функция перехода на окно Комнаты
def openRoomWindow(self):
self.RoomWindow = QtWidgets.QMainWindow()
ui = Ui_RoomWindow()
ui.setupUi(self.RoomWindow)
ui.pushButton_6.clicked.connect(self.returnMainWindow)
self.hide() # для сворачивания предыдущего окна
self.RoomWindow.show()
def openlodgers(self):
''' это не нужно вообще
self.lodgers = QtWidgets.QMainWindow()
ui = Ui_lodgers()
ui.setupUi(self.lodgers)
ui.pushButton_8.clicked.connect(self.returnMainWindow1)
sdb = QSqlDatabase.addDatabase('QSQLITE')
sdb.setDatabaseName('baza_1214255.db') # baza.db
sdb.open()
model = QSqlTableModel(db=sdb)
model.setTable("users")
model.setEditStrategy(QSqlTableModel.OnFieldChange)
model.select()
ui.tableView_1.setModel(model)
'''
self.hide()
self.lodgers.show()
# Функция для возвращения на главное окно (Из окна комнаты) по кнопке Назад
def returnMainWindow(self):
self.RoomWindow.close()
self.show()
# Функция для возвращения на главное окно (Из окна проживающие) по кнопке Назад
def returnMainWindow1(self):
self.lodgers._getRooms() # ВНИМАНИЕ, список self.lodgers.rоом_beds
#print("222 ", self.lodgers.rоом_beds) # формируетс здесь
self.drowRooms() # и сразу вызывается отрисовка !!!
self.lodgers.close()
self.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = ExampleApp()
window.show()
sys.exit(app.exec_())
GetRooms.py
from PyQt5 import QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtSql import QSqlDatabase
from PyQt5.QtSql import QSqlTableModel
from lodgers import Ui_lodgers # +
# новый класс
class Lodgers(QtWidgets.QMainWindow, Ui_lodgers):
def __init__(self, parent=None):
super(Lodgers, self).__init__(parent)
self.setupUi(self)
sdb = QSqlDatabase.addDatabase('QSQLITE')
sdb.setDatabaseName('baza_1214255.db') # baza.db замените на свою
sdb.open()
self.model = QSqlTableModel(db=sdb) # + self.model атрибут класса
self.model.setTable("users")
self.model.setEditStrategy(QSqlTableModel.OnFieldChange)
self.model.select()
self.tableView_1.setModel(self.model)
self.rоом_beds = [] # +++
def _getRooms(self): # +++
self.rоом_beds = [] # +++
for row in range(self.model.rowCount()):
if self.model.data(self.model.index(row, 2)) == 1: # + self.model атрибут класса
rоом_bed = str( self.model.data(
self.model.index(row, 1)))[:3], \
str(self.model.data(self.model.index(row, 1)))[3]
self.rоом_beds.append(rоом_bed)
# print(self.rоом_beds)
