Необходимо вывести данные из бд в кортёж python
Помогите пожалуйста мне нужно создать кортеж и записать в него данные из базы данных, точнее из поля seat_number и room_available
модуль main.py
import sys
from PyQt5.QtSql import QSqlTableModel
from PyQt5.QtSql import QSqlDatabase
from PyQt5.QtWidgets import QTableView
import mainWindow
import sqlite3
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from mainWindow import Ui_MainWindow
from RoomWindow import Ui_RoomWindow
from lodgers import Ui_lodgers
with sqlite3.connect('baza.db') as db:
sql = db.cursor()
# room_available (по умолчанию 1 (0- значит койко-место свободно, 1 койко-место занято))
# name ФИО cтудента
# seat number номер конкретного места в секции (1383- место №3 в 138 комнате)
# gender пол студента (1 мужской, 0 женский)
sql.execute("""CREATE TABLE IF NOT EXISTS users (
name TEXT NOT NULL,
seat_number INT NOT NULL PRIMARY KEY,
room_available INT NOT NULL DEFAULT 1,
gender INT NOT NULL
)""")
# команды подсказки
# INSERT INT users (name, seat_number) VALUES (" "," ")
# SELECT name, seat_number, room_available FROM users (Вывод таблицы вместо
# (name, seat_number, room_available) можно поставить * чтобы вывести всё)
# SELECT * FROM users WHERE (УСЛОВИЕ)
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.drowRooms()
self.pushButton_8.clicked.connect(self.drowRooms)
self.graphicsView.setScene(self.scene)
# Метод для отрисовки
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.Rooms[5][2].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("residing")
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()
def main():
app = QtWidgets.QApplication(sys.argv)
window = ExampleApp()
window.show()
app.exec_()
if __name__ == '__main__':
main()
модуль 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
→ Ссылка
вы в строке sql.execute("""CREATE TABLE IF NOT EXISTS users
указали, что таблица users, поэтому в строке model.setTable("users") поменял residing на users.
Установите какая у вас, а также поменяете на свои названия .db и .png
import sys
from PyQt5.QtSql import QSqlTableModel
from PyQt5.QtSql import QSqlDatabase
from PyQt5.QtWidgets import QTableView
#? import mainWindow
import sqlite3
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
#from mainWindow import Ui_MainWindow
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"))
#from RoomWindow import Ui_RoomWindow
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", "Назад"))
#from lodgers import Ui_lodgers
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", "Назад"))
# -----------------------------------------------------------------------------
'''
# residing
with sqlite3.connect('baza_1214255.db') as db:
sql = db.cursor()
# room_available (по умолчанию 1 (0- значит койко-место свободно, 1 койко-место занято))
# name ФИО cтудента
# seat_number номер конкретного места в секции (1383- место №3 в 138 комнате)
# gender пол студента (1 мужской, 0 женский)
#
sql.execute("""CREATE TABLE IF NOT EXISTS users (
name TEXT NOT NULL,
seat_number INT NOT NULL PRIMARY KEY,
room_available INT NOT NULL DEFAULT 1,
gender INT NOT NULL
)""")
# команды подсказки
# INSERT INT users (name, seat_number) VALUES (" "," ")
# SELECT name, seat_number, room_available FROM users
# SELECT * FROM users WHERE (УСЛОВИЕ)
'''
# -----------------------------------------------------------------------------
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# это ваш новый класс !!!
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') # поменяйте
sdb.open()
model = QSqlTableModel(db=sdb)
model.setTable("users") # users <-> residing ???
model.setEditStrategy(QSqlTableModel.OnFieldChange)
model.select()
self.tableView_1.setModel(model)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#class ExampleApp(QtWidgets.QMainWindow, mainWindow.Ui_MainWindow):
class ExampleApp(QtWidgets.QMainWindow, 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("im.png")) # "section_sketch.png"
# self.drowRooms()
self.pushButton_8.clicked.connect(self.drowRooms)
self.graphicsView.setScene(self.scene)
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
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
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
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[5][2].setBrush(QtGui.QBrush(Qt.red))
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')
sdb.open()
model = QSqlTableModel(db=sdb)
model.setTable("users") # users residing ???
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_())
