国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

這篇具有很好參考價值的文章主要介紹了基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

0. 前言

本節(jié)以醫(yī)院管理系統(tǒng)為例,使用PyQt5模擬醫(yī)院系統(tǒng)的功能。

本次用到的數(shù)據(jù)結(jié)構(gòu)思想為隊列,使用隊列能夠更真實的反映醫(yī)院排隊等候的情況(先掛號者先就診),事實上

操作系統(tǒng):Windows10 專業(yè)版

開發(fā)環(huán)境:Pycahrm Comunity 2022.3

Python解釋器版本:Python3.8

第三方庫:PyQt5

如果你還不會安裝第三方庫,你可以參考我的這篇文章進行學(xué)習(xí):
Python第三方庫安裝——使用vscode、pycharm安裝Python第三方庫

網(wǎng)盤已經(jīng)超出了2400個G存不進東西,不能通過網(wǎng)盤來分享了,代碼應(yīng)該如何復(fù)制我把它們放在了結(jié)尾。

1. 需求分析

  • 功能1:掛號
    用戶能夠填寫自己的掛號信息,如姓名、年齡、電話、掛號科室等。

  • 功能2:模擬就診并開藥
    根據(jù)用戶的掛號科室為其診斷出病因,并且為其開相應(yīng)藥物,由于此模擬系統(tǒng)只能給出醫(yī)生的反饋(病因+藥物),所以我們只能給出隨機的病因分配來模擬此功能(我可不是醫(yī)生)。

  • 功能3:各科室信息查詢
    展示所有科室正在等待的掛號者順序

  • 功能4:中途離開
    如若中途離開(感覺身體舒服了很多選擇不看?。?/p>

  • 功能5:退出界面
    按下此按鍵即退出掛號系統(tǒng)

  • 管理員功能:保存本次操作信息至redis數(shù)據(jù)庫 / 讀取之前保存的信息
    基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

2. 掛號界面的思路、UI界面代碼及相應(yīng)觸發(fā)函數(shù)

2.1 思路分析

掛號界面當(dāng)然是需要讓用戶填寫個人信息,這里我們要求填寫姓名、年齡、電話號和掛號科室。

基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

填寫完成后點擊確定將有文本框提示掛號成功

基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

為避免惡意重復(fù)掛號或者不小心掛了多個號造成用戶不必要的開支,還需要添加重復(fù)掛號的提示。如下圖,重復(fù)掛號將提示重復(fù)掛號。

基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

我們給小倒霉多掛幾個號,讓他有助于我們接下來的操作:

基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

2.2 ui_guahao.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(586, 354)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(170, 60, 41, 41))
        self.label.setObjectName("label")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(230, 70, 113, 21))
        self.lineEdit.setObjectName("lineEdit")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(170, 110, 41, 41))
        self.label_2.setObjectName("label_2")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(230, 120, 113, 21))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(170, 160, 41, 41))
        self.label_3.setObjectName("label_3")
        self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_3.setGeometry(QtCore.QRect(230, 170, 113, 21))
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(230, 210, 111, 22))
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(160, 210, 72, 21))
        self.label_4.setObjectName("label_4")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(420, 260, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(20, 10, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(0, 240, 581, 20))
        self.label_5.setText("")
        self.label_5.setObjectName("label_5")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 586, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        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
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "姓名"))
        self.label_2.setText(_translate("MainWindow", "年齡"))
        self.label_3.setText(_translate("MainWindow", "電話"))
        self.comboBox.setItemText(0, _translate("MainWindow", "內(nèi)科"))
        self.comboBox.setItemText(1, _translate("MainWindow", "外科"))
        self.comboBox.setItemText(2, _translate("MainWindow", "婦科"))
        self.comboBox.setItemText(3, _translate("MainWindow", "兒科"))
        self.comboBox.setItemText(4, _translate("MainWindow", "皮膚科"))
        self.comboBox.setItemText(5, _translate("MainWindow", "眼科"))
        self.label_4.setText(_translate("MainWindow", "掛號科室"))
        self.pushButton.setText(_translate("MainWindow", "確定"))
        self.pushButton_2.setText(_translate("MainWindow", "返回"))

2.3 相應(yīng)的觸發(fā)函數(shù)代碼

這個函數(shù)的功能是將在用戶點擊確定后提示掛號成功或者重復(fù)掛號,然后選擇是否將其添加進列表中。

# get_info 掛號
# 已有功能,添加病人
def get_info_guahao(ui):
    # 掛號信息獲取
    name = ui.lineEdit.text()
    year = ui.lineEdit_2.text()
    phone = ui.lineEdit_3.text()
    keshi = ui.comboBox.currentText()

    human = [name,year,phone,keshi]
    if human not in type_room_dict[keshi]:
        type_room_dict[keshi].append(human)
        ui.label_5.setText("{}:{}掛號{}成功".format(time.asctime(time.localtime(time.time())),name,keshi))
    else:
        ui.label_5.setText("{}:{}已在{}掛號,請勿重復(fù)掛號".format(time.asctime(time.localtime(time.time())),name, keshi))

3. 就診界面的思路、UI界面代碼及相應(yīng)觸發(fā)函數(shù)

3.1 思路分析

用戶選擇自己的科室和姓名,在點擊確定后下方文本框給出就診結(jié)果分析。
基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

接下來就是給小倒霉看病就診的環(huán)節(jié):

小倒霉還是比較幸運,在我們的隨機函數(shù)中抽中了輕度感冒,也不需要花錢開藥。當(dāng)然最重要的還是小倒霉身體無恙。

基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

3.2 ui_jiuzhen.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(575, 353)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(170, 140, 30, 16))
        self.label.setObjectName("label")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(170, 160, 171, 24))
        self.lineEdit.setObjectName("lineEdit")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(170, 80, 30, 16))
        self.label_4.setObjectName("label_4")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(170, 112, 75, 21))
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(11, 11, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(170, 200, 321, 16))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(170, 240, 321, 16))
        self.label_3.setObjectName("label_3")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(410, 230, 93, 28))
        self.pushButton.setObjectName("pushButton")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 575, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        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
        MainWindow.setWindowTitle(_translate("MainWindow", "就診"))
        self.label.setText(_translate("MainWindow", "姓名"))
        self.label_4.setText(_translate("MainWindow", "科室"))
        self.comboBox.setItemText(0, _translate("MainWindow", "內(nèi)科"))
        self.comboBox.setItemText(1, _translate("MainWindow", "外科"))
        self.comboBox.setItemText(2, _translate("MainWindow", "婦科"))
        self.comboBox.setItemText(3, _translate("MainWindow", "兒科"))
        self.comboBox.setItemText(4, _translate("MainWindow", "皮膚科"))
        self.comboBox.setItemText(5, _translate("MainWindow", "眼科"))
        self.pushButton_2.setText(_translate("MainWindow", "返回"))
        self.label_2.setText(_translate("MainWindow", ""))
        self.label_3.setText(_translate("MainWindow", "祝您早日康復(fù)!"))
        self.pushButton.setText(_translate("MainWindow", "查詢"))

3.3 相關(guān)觸發(fā)函數(shù):隨機分配癥狀函數(shù),對癥下藥函數(shù),就診函數(shù)(看完病自動離開隊列)

# 就診函數(shù)
# 病人就診后離隊
def get_info_jiuzhen(ui):
    keshi = ui.comboBox.currentText()
    name = ui.lineEdit.text()
    type_room = type_room_dict[keshi]
    for i in type_room:
        if name == i[0]:
            # 此處應(yīng)該給診斷結(jié)果
            ill = hospital.illness(keshi)
            medi = hospital.medicine(ill)
            ui.label_2.setText("診斷結(jié)果:{} {}".format(ill,medi))
            type_room.remove(i) # 就診后離開隊伍
            print(type_room)
            return

    ui.label_2.clear()
    ui.label_2.setText("{}{}".format(keshi,"查無此人"))
# 病癥分配函數(shù)和開藥函數(shù)
import time
import random

waike_list = []
neike_list = []
pifuke_list = []
erke_list = []
yanke_list = []
fuke_list = []

medicine_dict = {"重度感冒":"小柴胡顆粒,藍芩口服液,抗病毒口服液","肺炎":"紅霉素,羅紅霉素,阿奇霉素",
				"骨折":"迪巧鈣片,鈣爾奇","擦傷":"莫匹羅星軟膏",
				"炎癥":"花紅片","月經(jīng)不調(diào)":"當(dāng)歸丸",
				"疥瘡":"10%克羅米通乳劑","真菌病":"克念菌素、克霉唑、咪康唑","細菌感染":"百多邦莫匹羅星軟膏",
				"近視":"阿托品眼藥水-¥23","散光":"托比酰胺眼藥水",
				"營養(yǎng)不良":"腸動力藥","發(fā)育遲緩":"生長激素口服型"
				 }

a = ["內(nèi)科","外科","婦科","兒科","皮膚科","眼科"]
neike_ill_list = ["輕度感冒","重度感冒","肺炎"]
waike_ill_list = ["骨折","擦傷"]
fuke_ill_list = ["炎癥","月經(jīng)不調(diào)"]
pifuke_ill_list = ["疥瘡","真菌病","細菌感染"] #皮膚科疾病
yanke_ill_list = ["假性近視","近視","散光"]
erke_ill_list = ["營養(yǎng)不良","發(fā)育遲緩"]

type_room_dict = {"waike":waike_list,
                  "neike":neike_list,
                  "fuke":fuke_list,
                  "erke":erke_list,
                  "pifuke":pifuke_list,
                  "yanke":yanke_list}


time.asctime()
def illness(type_room):
    if type_room == "waike" or type_room == "外科":
        ill = random.randint(0, len(waike_ill_list) - 1)
        return waike_ill_list[ill]
    elif type_room == "neike" or type_room == "內(nèi)科":
        ill = random.randint(0, len(neike_ill_list) - 1)
        return neike_ill_list[ill]
    elif type_room == "fuke" or type_room == "婦科":
        ill = random.randint(0, len(fuke_ill_list) - 1)
        return fuke_ill_list[ill]
    elif type_room == "pifuke" or type_room == "皮膚科":
        ill = random.randint(0, len(pifuke_ill_list) - 1)
        return pifuke_ill_list[ill]
    elif type_room == "erke" or type_room == "兒科":
        ill = random.randint(0, len(erke_ill_list) - 1)
        return erke_ill_list[ill]
    elif type_room == "yanke" or type_room == "眼科":
        ill = random.randint(0, len(yanke_ill_list) - 1)
        return yanke_ill_list[ill]

# 傳入?yún)?shù)-癥狀
def medicine(ill):
    if ill == "輕度感冒" or ill == "假性近視":
        return "無需開藥,回家靜養(yǎng)即可"
    else:
        medi = medicine_dict[ill]
        return "所開藥物:{}".format(medi)

4. 離開界面的思路、UI界面代碼及相應(yīng)觸發(fā)函數(shù)

4.1 思路分析

離開界面比較輕松,函數(shù)功能比較簡單,只需要編寫將其從隊伍中移除的函數(shù)即可。

基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

4.2 ui_likai.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file '.\ui_likai.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# 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(576, 353)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(11, 11, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(0, 200, 571, 20))
        self.label_2.setText("")
        self.label_2.setObjectName("label_2")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(170, 112, 75, 21))
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(170, 80, 30, 16))
        self.label_4.setObjectName("label_4")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(170, 140, 30, 16))
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(410, 230, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(170, 160, 171, 24))
        self.lineEdit.setObjectName("lineEdit")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 576, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        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
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton_2.setText(_translate("MainWindow", "返回"))
        self.comboBox.setItemText(0, _translate("MainWindow", "內(nèi)科"))
        self.comboBox.setItemText(1, _translate("MainWindow", "外科"))
        self.comboBox.setItemText(2, _translate("MainWindow", "婦科"))
        self.comboBox.setItemText(3, _translate("MainWindow", "兒科"))
        self.comboBox.setItemText(4, _translate("MainWindow", "皮膚科"))
        self.comboBox.setItemText(5, _translate("MainWindow", "眼科"))
        self.label_4.setText(_translate("MainWindow", "科室"))
        self.label.setText(_translate("MainWindow", "姓名"))
        self.pushButton.setText(_translate("MainWindow", "確認(rèn)離開"))

4.3相應(yīng)觸發(fā)函數(shù):離開函數(shù)

只需要一個函數(shù)就好啦

# get_info 離開隊伍
def get_info_likai(ui):
    keshi = ui.comboBox.currentText()
    name = ui.lineEdit.text()
    ui.label_2.setText("{}:{}科室{}:已為您取消排隊,您現(xiàn)在可以離開".format(time.asctime(time.localtime(time.time())),keshi,name))
    print(keshi,name)

5. 各科室信息查詢界面的思路、UI界面代碼及相應(yīng)觸發(fā)函數(shù)

5.1 思路分析

需要將每一個科室的信息放至界面中,為了使界面更加合理,應(yīng)該使用一個表格來放置,如下:

基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)
應(yīng)該使用 tableview 或者 tableweight

5.2 ui_info.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(572, 351)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(20, 10, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(450, 10, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(20, 50, 531, 241))
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(4)
        self.tableWidget.setRowCount(0)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 572, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        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
        MainWindow.setWindowTitle(_translate("MainWindow", "各科室信息"))
        self.pushButton.setText(_translate("MainWindow", "返回"))
        self.pushButton_2.setText(_translate("MainWindow", "刷新"))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "姓名"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("MainWindow", "年齡"))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("MainWindow", "電話"))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("MainWindow", "科室"))

5.3 相關(guān)觸發(fā)函數(shù):刷新函數(shù)

在點擊刷新后將顯示最新的信息:

def show_info(ui):
    # 清空表中數(shù)據(jù)
    ui.tableWidget.setRowCount(0)
    ui.tableWidget.clearContents()
    for k in ["內(nèi)科","外科","兒科","皮膚科","眼科","婦科"]:
        items = type_room_dict[k]
        for i in range(len(items)):
            item = items[i]
            row = ui.tableWidget.rowCount()
            ui.tableWidget.insertRow(row)
            for j in range(4):
                item = QTableWidgetItem(str(items[i][j]))
                print(items[i][j])
                item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
                ui.tableWidget.setItem(row, j, item)
                print(row, j, item)

6. 主界面的思路和相關(guān)代碼

6.1 思路分析

需要繪制這個主界面,還需要有相關(guān)的頁面跳轉(zhuǎn)函數(shù)

基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

6.2 ui_main.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(577, 354)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(240, 28, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(240, 81, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(240, 134, 93, 28))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(240, 187, 93, 28))
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(240, 240, 93, 28))
        self.pushButton_5.setObjectName("pushButton_5")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 577, 26))
        self.menubar.setObjectName("menubar")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionload = QtWidgets.QAction(MainWindow)
        self.actionload.setObjectName("actionload")
        self.actionsave = QtWidgets.QAction(MainWindow)
        self.actionsave.setObjectName("actionsave")
        self.menu.addAction(self.actionload)
        self.menu.addAction(self.actionsave)
        self.menubar.addAction(self.menu.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "掛號"))
        self.pushButton_2.setText(_translate("MainWindow", "就診"))
        self.pushButton_3.setText(_translate("MainWindow", "離開"))
        self.pushButton_4.setText(_translate("MainWindow", "各科室信息"))
        self.pushButton_5.setText(_translate("MainWindow", "退出"))
        self.menu.setTitle(_translate("MainWindow", "管理員"))
        self.actionload.setText(_translate("MainWindow", "load"))
        self.actionsave.setText(_translate("MainWindow", "save"))

6.3 main.py

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidgetItem
from functools import partial
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import Qt
import time

import ui_guahao
import ui_jiuzhen
import ui_main
import ui_likai
import ui_info
import hospital

waike_list = []
neike_list = []
pifuke_list = []
erke_list = []
yanke_list = []
fuke_list = []
items = []

person_list = []

type_room_dict = {"waike":waike_list,
                  "neike":neike_list,
                  "fuke":fuke_list,
                  "erke":erke_list,
                  "pifuke":pifuke_list,
                  "yanke":yanke_list,
                  "外科": waike_list,
                  "內(nèi)科": neike_list,
                  "婦科": fuke_list,
                  "兒科": erke_list,
                  "皮膚科": pifuke_list,
                  "眼科": yanke_list
                  }


class UI_main(QMainWindow,ui_main.Ui_MainWindow):
    def __init__(self):
        super(UI_main, self).__init__()
        self.setupUi(self)

        jiuzhen = UI_jiuzhen()
        guahao = UI_guahao()
        likai = UI_likai()
        info = UI_info()

        # button綁定觸發(fā)事件
        self.pushButton.clicked.connect(lambda: {self.hide(), guahao.show()})
        self.pushButton_2.clicked.connect(lambda: {self.hide(), jiuzhen.show()})
        self.pushButton_3.clicked.connect(lambda: {self.hide(), likai.show()})
        self.pushButton_4.clicked.connect(lambda: {self.hide(), info.show()})
        self.pushButton_5.clicked.connect(partial(self.close))



class UI_guahao(QMainWindow,ui_guahao.Ui_MainWindow):
    def __init__(self):
        super(UI_guahao, self).__init__()
        self.setupUi(self)

        self.pushButton.clicked.connect(partial(get_info_guahao,self))
        self.pushButton_2.clicked.connect(lambda: {self.close(),main.show()})



class UI_jiuzhen(QMainWindow, ui_jiuzhen.Ui_MainWindow):
    def __init__(self):
        super(UI_jiuzhen, self).__init__()
        self.setupUi(self)

        self.pushButton.clicked.connect(partial(get_info_jiuzhen, self))
        self.pushButton_2.clicked.connect(lambda: {self.close(), main.show()})

class UI_likai(QMainWindow,ui_likai.Ui_MainWindow):
    def __init__(self):
        super(UI_likai, self).__init__()
        self.setupUi(self)

        self.pushButton.clicked.connect(partial(get_info_likai,self))
        self.pushButton_2.clicked.connect(lambda: {self.close(),main.show()})

class UI_info(QMainWindow,ui_info.Ui_MainWindow):
    def __init__(self):
        super(UI_info, self).__init__()
        self.setupUi(self)

        self.pushButton.clicked.connect(lambda: {self.close(),main.show()})
        self.pushButton_2.clicked.connect(partial(show_info,self))

# get_info 掛號
# 已有功能,添加病人
def get_info_guahao(ui):
    # 掛號信息獲取
    name = ui.lineEdit.text()
    year = ui.lineEdit_2.text()
    phone = ui.lineEdit_3.text()
    keshi = ui.comboBox.currentText()

    human = [name,year,phone,keshi]
    if human not in type_room_dict[keshi]:
        type_room_dict[keshi].append(human)
        ui.label_5.setText("{}:{}掛號{}成功".format(time.asctime(time.localtime(time.time())),name,keshi))
    else:
        ui.label_5.setText("{}:{}已在{}掛號,請勿重復(fù)掛號".format(time.asctime(time.localtime(time.time())),name, keshi))


# get_info 就診
# 病人就診后離隊
def get_info_jiuzhen(ui):
    keshi = ui.comboBox.currentText()
    name = ui.lineEdit.text()
    type_room = type_room_dict[keshi]
    for i in type_room:
        if name == i[0]:
            # 此處應(yīng)該給診斷結(jié)果
            ill = hospital.illness(keshi)
            medi = hospital.medicine(ill)
            ui.label_2.setText("診斷結(jié)果:{} {}".format(ill,medi))
            type_room.remove(i) # 就診后離開隊伍
            print(type_room)
            return

    ui.label_2.clear()
    ui.label_2.setText("{}{}".format(keshi,"查無此人"))

# get_info 離開隊伍
def get_info_likai(ui):
    keshi = ui.comboBox.currentText()
    name = ui.lineEdit.text()
    ui.label_2.setText("{}:{}科室{}:已為您取消排隊,您現(xiàn)在可以離開".format(time.asctime(time.localtime(time.time())),keshi,name))
    print(keshi,name)



# 所有信息展示
def show_info(ui):
    # 清空表中數(shù)據(jù)
    ui.tableWidget.setRowCount(0)
    ui.tableWidget.clearContents()
    for k in ["內(nèi)科","外科","兒科","皮膚科","眼科","婦科"]:
        items = type_room_dict[k]
        for i in range(len(items)):
            item = items[i]
            row = ui.tableWidget.rowCount()
            ui.tableWidget.insertRow(row)
            for j in range(4):
                item = QTableWidgetItem(str(items[i][j]))
                print(items[i][j])
                item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
                ui.tableWidget.setItem(row, j, item)
                print(row, j, item)


app = QtWidgets.QApplication(sys.argv)
main = UI_main()
main.show()
sys.exit(app.exec_())

6.4 hospital.py

import time
import random

waike_list = []
neike_list = []
pifuke_list = []
erke_list = []
yanke_list = []
fuke_list = []

medicine_dict = {"重度感冒":"小柴胡顆粒,藍芩口服液,抗病毒口服液","肺炎":"紅霉素,羅紅霉素,阿奇霉素",
				"骨折":"迪巧鈣片,鈣爾奇","擦傷":"莫匹羅星軟膏",
				"炎癥":"花紅片","月經(jīng)不調(diào)":"當(dāng)歸丸",
				"疥瘡":"10%克羅米通乳劑","真菌病":"克念菌素、克霉唑、咪康唑","細菌感染":"百多邦莫匹羅星軟膏",
				"近視":"阿托品眼藥水-¥23","散光":"托比酰胺眼藥水",
				"營養(yǎng)不良":"腸動力藥","發(fā)育遲緩":"生長激素口服型"
				 }

a = ["內(nèi)科","外科","婦科","兒科","皮膚科","眼科"]
neike_ill_list = ["輕度感冒","重度感冒","肺炎"]
waike_ill_list = ["骨折","擦傷"]
fuke_ill_list = ["炎癥","月經(jīng)不調(diào)"]
pifuke_ill_list = ["疥瘡","真菌病","細菌感染"] #皮膚科疾病
yanke_ill_list = ["假性近視","近視","散光"]
erke_ill_list = ["營養(yǎng)不良","發(fā)育遲緩"]

type_room_dict = {"waike":waike_list,
                  "neike":neike_list,
                  "fuke":fuke_list,
                  "erke":erke_list,
                  "pifuke":pifuke_list,
                  "yanke":yanke_list}


time.asctime()
def illness(type_room):
    if type_room == "waike" or type_room == "外科":
        ill = random.randint(0, len(waike_ill_list) - 1)
        return waike_ill_list[ill]
    elif type_room == "neike" or type_room == "內(nèi)科":
        ill = random.randint(0, len(neike_ill_list) - 1)
        return neike_ill_list[ill]
    elif type_room == "fuke" or type_room == "婦科":
        ill = random.randint(0, len(fuke_ill_list) - 1)
        return fuke_ill_list[ill]
    elif type_room == "pifuke" or type_room == "皮膚科":
        ill = random.randint(0, len(pifuke_ill_list) - 1)
        return pifuke_ill_list[ill]
    elif type_room == "erke" or type_room == "兒科":
        ill = random.randint(0, len(erke_ill_list) - 1)
        return erke_ill_list[ill]
    elif type_room == "yanke" or type_room == "眼科":
        ill = random.randint(0, len(yanke_ill_list) - 1)
        return yanke_ill_list[ill]

# 傳入?yún)?shù)-癥狀
def medicine(ill):
    if ill == "輕度感冒" or ill == "假性近視":
        return "無需開藥,回家靜養(yǎng)即可"
    else:
        medi = medicine_dict[ill]
        return "所開藥物:{}".format(medi)

7.注意事項

可能大家并未太多接觸到數(shù)據(jù)庫部分,所以在管理員功能方面暫時不開發(fā)。

如果你想借鑒我的代碼來嘗試運行效果,那么在你的工程目錄下,應(yīng)該是如此的結(jié)構(gòu),文件命名記得不要弄錯:

基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

相關(guān)的代碼我已經(jīng)全部給出,可以在最開始處直接點擊來快速跳轉(zhuǎn)

基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

其他PyQt5文章

基于PyQt5的圖形化界面開發(fā)——自制MQTT客戶端

基于PyQt5的圖形化界面開發(fā)——Windows內(nèi)存資源監(jiān)視助手[附帶編譯exe教程]

基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)

基于PyQt5的圖形化界面開發(fā)——自制ssh工具

基于PyQt5的圖形化界面開發(fā)——PyQt示例_計算器

基于PyQt5的圖形化界面開發(fā)——PyQt示例_掃雷

基于PyQt5的圖形化界面開發(fā)——自制Redis圖形化客戶端(文末附源碼)

基于PyQt5的圖形化界面開發(fā)——堆棧動畫演示

基于PyQt5的圖形化界面開發(fā)——隊列動畫演示文章來源地址http://www.zghlxwxcb.cn/news/detail-432746.html

到了這里,關(guān)于基于PyQt5的圖形化界面開發(fā)——模擬醫(yī)院管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 基于pyqt5開發(fā)的圖書管理系統(tǒng)UI(帶登錄頁面)

    基于pyqt5開發(fā)的圖書管理系統(tǒng)UI(帶登錄頁面)

    由于老師布置了關(guān)于圖書館UI界面的開發(fā)任務(wù),因此做了這個UI界面,因為老師說用C#開發(fā),而自己也不會,使用就pyqt去實現(xiàn),希望這個UI界面對各位小伙伴有些幫助。UI主要是使用的designer去設(shè)計的,然后進行了界面的美化,對于里面的功能目前也只做了天氣的,但是因為這個

    2024年02月12日
    瀏覽(22)
  • PyQT5: 構(gòu)建圖形用戶界面的Python指南

    PyQt5是一個Python綁定的跨平臺C++庫,用于創(chuàng)建豐富的圖形用戶界面(GUI)。它是Qt庫的Python接口,Qt庫由Qt公司開發(fā),用于開發(fā)GUI程序,也稱作應(yīng)用程序框架。在此,我們將詳細介紹如何使用PyQt5創(chuàng)建圖形用戶界面。 在開始之前,我們需要確保已經(jīng)在Python環(huán)境中安裝了PyQt5。如果

    2024年02月13日
    瀏覽(29)
  • RAMMAP(運行內(nèi)存清理工具)自動釋放內(nèi)存,并利用pyqt5制作圖形界面

    RAMMAP(運行內(nèi)存清理工具)自動釋放內(nèi)存,并利用pyqt5制作圖形界面

    上一篇文章用python制作了一個自動清理內(nèi)存的程序,利用cmd端口調(diào)用Rammap,不過只是做了一個托盤圖標(biāo),這回用pyqt5做一個簡單的圖形界面,并實現(xiàn)對自動清理模式的一些設(shè)置 首先利用pyqt5工具qt designer生成UI界面,這里命名為F_UI.ui(并利用信號/槽編輯器將滑動條和微調(diào)框綁

    2024年02月11日
    瀏覽(16)
  • 【PyQt5】構(gòu)建強大的Python圖形用戶界面應(yīng)用程序 -- 入門指南

    【PyQt5】構(gòu)建強大的Python圖形用戶界面應(yīng)用程序 -- 入門指南

    ? 作者主頁: 愛笑的男孩。的博客_CSDN博客-深度學(xué)習(xí),活動,python領(lǐng)域博主 愛笑的男孩。擅長深度學(xué)習(xí),活動,python,等方面的知識,愛笑的男孩。關(guān)注算法,python,計算機視覺,圖像處理,深度學(xué)習(xí),pytorch,神經(jīng)網(wǎng)絡(luò),opencv領(lǐng)域. https://blog.csdn.net/Code_and516?type=blog 個人簡介:打工人。 持續(xù)分

    2024年02月15日
    瀏覽(27)
  • 界面開發(fā)(2)--- 使用PyQt5制作用戶登陸界面

    界面開發(fā)(2)--- 使用PyQt5制作用戶登陸界面

    上篇文章已經(jīng)介紹了如何配置PyQt5環(huán)境,這篇文章在此基礎(chǔ)上展開,主要記錄一下如何使用 PyQt5 制作用戶登陸界面,并對一些基礎(chǔ)操作進行介紹。 下面是具體步驟,一起來看看吧! 1. 打開 Pycharm 中的 Qt Designer 工具。 2. 選擇Main Window模式,創(chuàng)建界面窗口。 3. 移除菜單欄和狀態(tài)

    2024年02月05日
    瀏覽(22)
  • 界面開發(fā)(1) --- PyQt5環(huán)境配置

    界面開發(fā)(1) --- PyQt5環(huán)境配置

    第一步:首先安裝社區(qū)版Pycharm 下載地址:https://www.jetbrains.com/pycharm/download/#section=windows 第二步:安裝Anaconda3,配置虛擬環(huán)境 下載地址:https://www.anaconda.com/ 第三步:安裝 Python 第三方庫,包括 pyqt5,pyqt5-tools 和 pyqt5designer 在cmd中使用 pip install pyqt5 , pip install pyqt5-tools , pip in

    2024年04月12日
    瀏覽(27)
  • 【pyqt5界面化開發(fā)-5】網(wǎng)格布局(九宮格)界面

    【pyqt5界面化開發(fā)-5】網(wǎng)格布局(九宮格)界面

    需要模塊:QGridLayout 代碼

    2024年02月11日
    瀏覽(42)
  • 【pyqt5界面化工具開發(fā)-11】界面化顯示檢測信息

    【pyqt5界面化工具開發(fā)-11】界面化顯示檢測信息

    目錄 0x00 前言: 一、布局的設(shè)置 二、消息的顯示 我們在10講的基礎(chǔ)上,需要將其輸出到界面上 思路: 1、消息的傳遞 2、布局的設(shè)置 先考慮好消息的傳遞,再來完善布局 其實先完善布局,再來設(shè)置消息的傳遞也行 (我不是中國人,就是外國人) 將布局設(shè)置好以后,我們就

    2024年02月10日
    瀏覽(24)
  • 界面開發(fā)(3)--- PyQt5用戶登錄界面連接數(shù)據(jù)庫

    界面開發(fā)(3)--- PyQt5用戶登錄界面連接數(shù)據(jù)庫

    為了實現(xiàn)用戶登錄界面的登錄功能,我們必須建立一個數(shù)據(jù)庫,并把賬號和對應(yīng)的密碼,存儲到數(shù)據(jù)庫中。如果輸入的賬號和密碼與數(shù)據(jù)庫中的一致,那我們就允許用戶登錄,進入新的界面。 上篇文章介紹了如何使用PyQt5制作用戶登錄界面,這篇文章在此基礎(chǔ)上展開,建立簡

    2024年02月05日
    瀏覽(25)
  • Python - PyQT5開發(fā)UI界面 - 環(huán)境搭建

    Python - PyQT5開發(fā)UI界面 - 環(huán)境搭建

    沒有做過UI界面的都會把UI的制作想象的很神秘,我在剛開始的時候也是感覺異常神秘、很復(fù)雜、并且無從下手,不過在真正的做出來一個界面后,發(fā)現(xiàn)也并沒有想象中的那么難,而且做出來可視化的東西所帶來的成就感是超越代碼本身的;不過整個過程也并不順利,網(wǎng)上都是

    2023年04月23日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包