在每位患者附近都会有一个按钮Выселить,按下该按钮可以在出院时将患者逐出病房,这将从患者数据库中删除他的姓名以释放空间。
患者的分布将按年龄划分,分为两个年龄类别:
- 18-45岁
- 46+:
在每个房间中,将计算患者的平均年龄,视情况而定,18-45岁年龄组的患者将被分配到患者平均年龄低于45岁的房间,46岁以上年龄组的患者将被分配到分配到患者平均年龄在45岁以上的病房,但前提是此类病房有空位。
如果没有按年龄划分的患者住宿选择,他们将被安置在与其性别对应的房间内的任何免费床位上,但需视供应情况而定。
如果根本没有空位,病人就会被安置在走廊里,并会出现相应的信息:“没有空位。病人(病人资料)将被安置在大厅。
安置在大厅的病人名单将显示在每个科室的房间列表下方,标题为“临时住宿(大厅)”,格式与病房病人名单类似,但没有“驱逐”按钮将有一个“安置在病房”按钮,通过手动选择允许重新安置患者的空置病房的编号,可以将患者安置在病房而不是大厅。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, \
QTableView, QGridLayout, QListWidget, QLabel, QListView, QTabWidget, QFrame, \
QHeaderView, QFormLayout # +++
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Example(QWidget):
def __init__(self):
super().__init__()
self.table = QTableView(self)
self.model = QStandardItemModel()
self.table.setModel(self.model)
self.model.setHorizontalHeaderLabels(["Имя", "Пол", "Возраст", "Отделение", "Диагноз", "Палата"])
self.table.setAlternatingRowColors(True) # +
self.table.horizontalHeader().setSectionResizeMode(4, QHeaderView.Stretch) # +
self.btn = QPushButton("Отправить")
self.btn.clicked.connect(self.add)
self.years = QLabel('Возраст', alignment=Qt.AlignRight | Qt.AlignVCenter)
self.years.setMaximumWidth(60)
self.years_line = QLineEdit(placeholderText='Введите возраст...')
self.diagnose_line = QLineEdit(placeholderText='Введите диагноз...')
self.diagnose = QLabel('Диагноз', alignment=Qt.AlignRight | Qt.AlignVCenter)
self.otd_line = QLineEdit(placeholderText='Введите отделение...')
self.otd = QLabel('Отделение', alignment=Qt.AlignRight | Qt.AlignVCenter)
self.gender_line = QLineEdit(placeholderText='Введите пол...')
self.gender = QLabel('Пол', alignment=Qt.AlignRight | Qt.AlignVCenter)
self.name_line = QLineEdit(placeholderText='Введите имя...')
self.name = QLabel('Имя', alignment=Qt.AlignRight | Qt.AlignVCenter)
self.init()
def init(self):
grid = QGridLayout(self)
grid.addWidget(self.name, 1, 0)
grid.addWidget(self.name_line, 1, 1, 1, 3)
grid.addWidget(self.gender, 2, 0)
grid.addWidget(self.gender_line, 2, 1, 1, 3)
grid.addWidget(self.years, 3, 0)
grid.addWidget(self.years_line, 3, 1, 1, 3)
grid.addWidget(self.otd, 4, 0)
grid.addWidget(self.otd_line, 4, 1, 1, 3)
grid.addWidget(self.diagnose, 5, 0)
grid.addWidget(self.diagnose_line, 5, 1, 1, 3)
grid.addWidget(self.btn, 6, 1, 1, 3) #, 1, -10)
grid.addWidget(self.table, 7, 0, 5, 4)
def add(self):
p = 45
i = 0
rows = self.model.rowCount()
columns = self.model.columnCount()
for column in range(columns):
if column == 0:
self.model.setItem(rows, column, QStandardItem(self.name_line.text()))
if column == 1:
self.model.setItem(rows, column, QStandardItem(self.gender_line.text()))
if column == 2:
self.model.setItem(rows, column, QStandardItem(self.years_line.text()))
if column == 3:
self.model.setItem(rows, column, QStandardItem(self.otd_line.text()))
if column == 4:
self.model.setItem(rows, column, QStandardItem(self.diagnose_line.text()))
if column == 5:
if self.years_line <= p:
self.table.item(self.model.index(i, 5), "1")
if column == 6:
self.table.setIndexWidget(self.model.index(i, 6), self.del_btn)
self.name_line.clear()
self.diagnose_line.clear()
self.otd_line.clear()
self.years_line.clear()
self.gender_line.clear()
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setStyle("Fusion")
ex = Example()
ex.resize(700, 500)
ex.setWindowTitle('Больница')
ex.setWindowIcon(QIcon('key.png'))
ex.show()
sys.exit(app.exec_())

你问非常全球性的问题,这不是很好。
我对医学不太了解,因此不明白为什么有必要按年龄将患者安置在病房?
我看到你的任务是这样的:
QLineEdit为QComboBoxВозраст变成了Дата рождения——QDateEdit со встроенным календарем!listPalatсортировать данные!редактировать在表里你只能团Диагноз!ВыписатьПоселить в палату试试看。