好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > python實現簡易自習室座位預約系統

python實現簡易自習室座位預約系統

熱門標簽:如何地圖標注公司 企業彩鈴地圖標注 外賣地址有什么地圖標注 長春極信防封電銷卡批發 煙臺電話外呼營銷系統 銀川電話機器人電話 電銷機器人錄音要學習什么 上海正規的外呼系統最新報價 預覽式外呼系統

剛學習python不久,如有問題希望能得到指正

0 效果

座位選擇框


1 關于所需庫

Python 環境中需要安裝下列 python 包:

  • PySide2
  • datetime
  • json
  • argparse

2 關于座位選擇框

選擇框內桌子數量,大小,樣式以及每個椅子位置都是可變的,例如我們可以將桌子顏色和是否圓角改變:


這主要依靠seatInf.json內的信息,展示如下:

{
    "tableNum": 6,
    "tablePos": [
        [0.02,0.15],
        [0.35,0.15],
        [0.68,0.15],
        [0.02,0.65],
        [0.35,0.65],
        [0.68,0.65]
    ],
    "tableSize": [
        [0.25,0.2],
        [0.25,0.2],
        [0.25,0.2],
        [0.25,0.2],
        [0.25,0.2],
        [0.25,0.2]
    ],
    "tableType": [
        0,1,2,0,0,0
    ],
    "tableSS": [
        "QLabel{background: rgb(245,245,245);color:rgb(92,92,92);border-radius:50px;border: 3px solid rgb(142,142,142)}",
        "QLabel{background: rgb(245,245,245);color:rgb(92,92,92);border: 3px solid rgb(142,142,142)}",
        "QLabel{background: rgb(221,217,195);color:rgb(92,92,92);border: 3px solid rgb(142,142,142)}"
    ],
    "tableId": [
        "A","B","C","D","E","F"
    ],
    "chairNum": [
        6,6,6,6,6,6
    ],
    "chairPos": [
        [
            [0.04,-0.08],
            [0.105,-0.08],
            [0.17,-0.08],
            [0.04,0.21],
            [0.105,0.21],
            [0.17,0.21]
        ],
        [
            [0.04,-0.08],
            [0.105,-0.08],
            [0.17,-0.08],
            [0.04,0.21],
            [0.105,0.21],
            [0.17,0.21]
        ],[
            [0.04,-0.08],
            [0.105,-0.08],
            [0.17,-0.08],
            [0.04,0.21],
            [0.105,0.21],
            [0.17,0.21]
        ],[
            [0.04,-0.08],
            [0.105,-0.08],
            [0.17,-0.08],
            [0.04,0.21],
            [0.105,0.21],
            [0.17,0.21]
        ],[
            [0.04,-0.08],
            [0.105,-0.08],
            [0.17,-0.08],
            [0.04,0.21],
            [0.105,0.21],
            [0.17,0.21]
        ],[
            [0.04,-0.08],
            [0.105,-0.08],
            [0.17,-0.08],
            [0.04,0.21],
            [0.105,0.21],
            [0.17,0.21]
        ]
    ],
    "chairSize": [
        0.032,0.07
    ],
    "chairSS_W": "background: rgb(242,242,242);border-radius:15px;border: 3px solid rgb(74,69,42)",
    "chairSS_K": "background: rgb(64,64,64);border-radius:15px;border: 3px solid rgb(74,69,42)",
    "chairSS_R": "background: rgb(149,55,43);border-radius:15px;border: 3px solid rgb(74,69,42)",
    "mapSize": [
        2,2
    ]
}

3 關于申請表和座位被占情況

由于只是為了模擬過程,現申請表以及座位被占情況分別存儲在orderList.json和occupied.json中:

3.1 orderList.json:

"[[\"A1\", \"A2\", \"A3\", \"A4\", \"A5\", \"A6\", \"B1\", \"B2\", \"B3\", \"B4\", \"B5\", \"B6\", \"C1\", \"C2\", \"C3\", \"C4\", \"C5\", \"C6\", \"D1\", \"D2\", \"D3\", \"D4\", \"D5\", \"D6\", \"E1\", \"E2\", \"E3\", \"E4\", \"E5\", \"E6\", \"F1\", \"F2\", \"F3\", \"F4\", \"F5\", \"F6\"], [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"1816000XXXX\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"], [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"temp\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"]]"

3.2 occupied.json:

"{\"A1\": false, \"A2\": false, \"A3\": false, \"A4\": false, \"A5\": false, \"A6\": false, \"B1\": false, \"B2\": false, \"B3\": false, \"B4\": false, \"B5\": false, \"B6\": false, \"C1\": false, \"C2\": false, \"C3\": false, \"C4\": true, \"C5\": false, \"C6\": false, \"D1\": false, \"D2\": false, \"D3\": false, \"D4\": false, \"D5\": false, \"D6\": false, \"E1\": false, \"E2\": false, \"E3\": false, \"E4\": false, \"E5\": false, \"E6\": false, \"F1\": false, \"F2\": false, \"F3\": false, \"F4\": false, \"F5\": false, \"F6\": false}"

4 關于命令行參數

我們使用命令行代碼模擬刷卡過程,同時我們也設置了預約和申請暫離的命令行代碼:

4.1 slotCard_in

Python slotCard_in.py -i="XXXXXXXXXXX"
Python slotCard_in.py --student-id="XXXXXXXXXXX"

4.2 slotCard_out

Python slotCard_out.py -i="XXXXXXXXXXX"
Python slotCard_out.py --student-id="XXXXXXXXXXX"

4.3 cmd_order

'''
TEST CODE:
--------------------------------
see Map:
Python cmd_order.py
--------------------------------
order seat: 
Python cmd_order.py -i="XXXXXXXXXXX" -n="xxx" -s="A1"

-h   --help         show the help message and exit
-i   --student-id   student id
-n   --student-name student name
-s   --seatPos      seat id  
'''

4.4 cmd_leave

'''
TEST CODE:
----------------------------------------------
leave for temp
Python cmd_leave.py -i="XXXXXXXXXXX" -t="temp"
----------------------------------------------
leave
Python cmd_leave.py -i="XXXXXXXXXXX" -t="free"  
[or]
Python cmd_leave.py -i="XXXXXXXXXXX" 

-h   --help         show the help message and exit
-i   --student-id   student id
-t   --leave-type   temp/free 
'''

5 關于命令行輸出

5.1 cmd_order 預約

> Python cmd_order.py
[seat]============================
可預約座位:

 ▇ A2 A3 A4 A5 A6
 B1 B2 B3 B4 B5 B6
 C1 C2 C3 C4 C5 C6
 D1 D2 D3 D4 D5 D6
 E1 E2 E3 E4 E5 E6
 F1 F2 F3 F4 F5 F6

> Python cmd_order.py -i="18160000000" -n="xxx" -s="A1"
[book error]========================
座位已被占,請選擇其他位置申請

> Python cmd_order.py -i="18160000000" -n="xxx" -s="A100"
[book error]========================
座位編號格式不正確

> Python cmd_order.py -i="18160000000" -n="xxx" -s="A2"
[book]===========================================
2021-05-31 18:04:35
姓名:xxx
學號:18160000000
座次:A2
預約成功!
-------------------------------------------------
注意事項:
1、預約成功后請在30分鐘內到達,否則預約信息將失效。
2、進入自習室前請刷校園卡核驗信息。
3、如要暫離請cmd運行如下代碼:
   Python cmd_leave.py -i='XXXXXXXXXXX' -t='temp'
4、離開、取消預約請cmd運行如下代碼:
   Python cmd_leave.py -i='XXXXXXXXXXX' -t='free'

> Python cmd_order.py -i="18160000000" -n="xxx" -s="A3"
[book error]========================
請勿重復預約

5.2 slotCard_in 刷卡進入

> Python slotCard_in.py -i="1816000XXXX"
[in error]==========================
非本校校園卡或已超時

> Python slotCard_in.py -i="18160000000"
[in]================================
預約時間:2021-05-31 18:04:35
校園卡號:18160000000
座次:A2

5.3 cmd_leave 申請離開或暫離

> Python cmd_leave.py -i="1816000XXXX" -t="temp"
[out error]=========================
可能輸入了錯誤的校園卡號

> Python cmd_leave.py -i="18160000000" -t="temp"
[out]===============================
已進行暫離申請

> Python cmd_leave.py -i="18160000000" -t="free"
[out]===============================
已釋放位置

5.4 slotCard_out 刷卡離開或暫離

> Python slotCard_out.py -i="18160000000"
[out]===============================
暫離時間:2021-05-31 18:23:09
校園卡號:18160000000
座次:A1

> Python slotCard_out.py -i="1816000XXXX"
[out error]=========================
請更換卡片再次嘗試

6 關于界面代碼

6.1 orderSystem.py

from PySide2.QtWidgets import QApplication, QWidget,QScrollArea
from PySide2.QtWidgets import QLabel,QPushButton,QLineEdit
from PySide2.QtGui import QIcon,QFont
from PySide2.QtCore import Qt
import sys
sys.path.append("...")
import json
import datetime
from orderDataDisplay import orderDisplay
from InfOperate import occupySeat,order,timeoutDetection,alreadyOreder


class Window_main(QWidget):
    def __init__(self,Width=700,Height=840):
        super().__init__() 
        self.setWindowTitle("book seat online")
        timeoutDetection()

        self.Width=Width
        self.Height=Height
        self.selectedId=""
        self.selectedBtn=[]
        self.icoPath="./gallery/icon.ico"

        # 字體標簽
        title_qf=QFont()
        title_qf.setPointSize(11)
        title_qf.setBold(True)
        title_qf.setFamily("Cambria")
        main_qf=QFont()
        main_qf.setPointSize(27)
        main_qf.setBold(True)
        main_qf.setFamily("Cambria")
        Inf_qf=QFont()
        Inf_qf.setPointSize(10)
        Inf_qf.setBold(True)
        Inf_qf.setFamily("Cambria")
        table_qf=QFont()
        table_qf.setPointSize(16)
        table_qf.setBold(True)
        table_qf.setFamily("Cambria")
        # ---
        self.QF_part_title=title_qf         # 框標題字體標簽
        self.QF_main_title=main_qf          # 主標題字體標簽
        self.QF_state_explain=Inf_qf        # 狀態標簽解釋文本字體標簽
        self.QF_Inf_title=title_qf          # 信息標題字體標簽
        self.QF_Inf_text=Inf_qf             # 信息文本字體標簽
        self.QF_table_name=table_qf         # 桌子編號信息標簽

        # 樣式表
        self.SS_part_frame="QLabel{background: rgb(245,245,245);color:rgb(92,92,92);border-radius:8px;border: 2.5px solid rgb(122,122,122)}"
        self.SS_part_title="QLabel{background: rgb(245,245,245);color:rgb(92,92,92)}"
        self.SS_main_title="QLabel{background: rgb(245,245,245);color:rgb(92,92,92);border-radius:50px;border: 3px solid rgb(142,142,142)}"
        self.SS_state_frame="QLabel{background: rgb(245,245,245);border-radius:5px;border: 3px solid rgb(172,172,172)}"
        self.SS_W="QLabel{background: rgb(242,242,242);border-radius:9px;border: 3px solid rgb(74,69,42)}"
        self.SS_K="QLabel{background: rgb(64,64,64);border-radius:9px;border: 3px solid rgb(74,69,42)}"
        self.SS_R="QLabel{background: rgb(149,55,43);border-radius:9px;border: 3px solid rgb(74,69,42)}"
        self.SS_state_explain="QLabel{background: rgb(214,219,233);color:rgb(92,92,92)}"
        self.SS_Inf_title="QLabel{background: rgb(230,230,230);color:rgb(82,82,82);border-radius:8px}"
        self.SS_text_Line="QLineEdit{border-radius:3px;background: rgb(205,205,205);color:rgb(82,82,82)}"
        self.SS_book_btn="color:rgb(255,255,255);background: rgb(79,148,204)"

        # path=sys.argv[0]
        # path=path[0:path.rfind("/")]
        f=open("./config/seatInf.json","r")
        seatInf=json.load(f)
        f=open("./config/occupied.json","r")
        seatOccupied=json.load(f)
        self.seatInf=seatInf
        self.seatOccupied=json.loads(seatOccupied)

        self.setSize()
        self.setIcon()
        self.partition()
        self.setStateExp()
        self.setInfBox()
        self.setMap()
        self.setBookBtn()    
    # ================================================================================================
    # 回調函數部分:
    def selectedPos(self):# 座位選擇回調
        btn=self.sender()
        tempSelectedId=btn.property("chairId")
        if not self.seatOccupied[tempSelectedId]:
            if len(self.selectedId)==0:
                self.selectedId=tempSelectedId
                self.selectedBtn=btn
                btn.setStyleSheet(self.seatInf["chairSS_R"])
                self.selectedBox.setText(" 當前選擇:  "+tempSelectedId)
            else:
                self.selectedBtn.setStyleSheet(self.seatInf["chairSS_W"])
                self.selectedBtn=btn
                btn.setStyleSheet(self.seatInf["chairSS_R"])
                self.selectedId=tempSelectedId
                self.selectedBox.setText(" 當前選擇:  "+tempSelectedId)

    def bookSeat(self):
        if not len(self.selectedId)==0:
            if alreadyOreder(self.InfBox_Id.text()):
                print("================================")
                print("請勿重復預約")
                print(" ")
            else:
                nowDate=datetime.datetime.now()
                nowDateStr=nowDate.strftime('%Y-%m-%d %H:%M:%S')
                print("================================")
                print(nowDateStr)
                print("姓名:"+self.InfBox_Name.text())
                print("學號:"+self.InfBox_Id.text())
                print("座次:"+self.selectedId)
                print(" ")
                # myapp.exit()
                # app = QApplication.instance()
                # if app is None: 
                #     app = QApplication(sys.argv)
                self.window_disp= orderDisplay(self.InfBox_Name.text(),
                            self.InfBox_Id.text(),
                            nowDateStr,
                            self.selectedId,700,840)
                self.window_disp.show()
                self.close()

                occupySeat(self.selectedId)
                order(self.InfBox_Id.text(),nowDateStr,self.selectedId)

            
            


    # ================================================================================================
    # 框架構造函數部分:
    def setSize(self):# 調整框架大小
        self.setGeometry(80,80,self.Width,self.Height)
        self.setMaximumSize(self.Width,self.Height)
        self.setMinimumSize(self.Width,self.Height)

    def setIcon(self):# 設置圖標
        appIcon=QIcon(self.icoPath)
        self.setWindowIcon(appIcon)

    def setStateExp(self):# 繪制狀態解釋框
        Width=self.Width
        Height=self.Height
        self.part0=QLabel(self)
        self.part0.setGeometry(0.66*Width,0.045*Height,
                               0.28*Width,0.14*Height)
        self.part0.setStyleSheet(self.SS_state_frame)

        # ---Color Bar--------------------------------------------------------------------
        self.CB1=QLabel(self)
        self.CB1.setGeometry(0.68*Width,0.06*Height,0.05*Width,0.03*Height)
        self.CB1.setStyleSheet(self.SS_W) 
        self.CB2=QLabel(self)
        self.CB2.setGeometry(0.68*Width,(0.06+0.04)*Height,0.05*Width,0.03*Height)
        self.CB2.setStyleSheet(self.SS_K) 
        self.CB3=QLabel(self)
        self.CB3.setGeometry(0.68*Width,(0.06+0.08)*Height,0.05*Width,0.03*Height)
        self.CB3.setStyleSheet(self.SS_R) 

        # ---Color Bar 解釋文本-------------------------------------------------------------
        self.plaintext1=QLabel(self)
        self.plaintext1.setGeometry(0.76*Width,(0.059)*Height,0.15*Width,0.032*Height)
        self.plaintext1.setStyleSheet(self.SS_state_explain)
        self.plaintext1.setText(" 可選擇")
        self.plaintext1.setFont(self.QF_state_explain)
        self.plaintext2=QLabel(self)
        self.plaintext2.setGeometry(0.76*Width,(0.059+0.04)*Height,0.15*Width,0.032*Height)
        self.plaintext2.setStyleSheet(self.SS_state_explain)
        self.plaintext2.setText(" 已被選")
        self.plaintext2.setFont(self.QF_state_explain)
        self.plaintext3=QLabel(self)
        self.plaintext3.setGeometry(0.76*Width,(0.059+0.08)*Height,0.15*Width,0.032*Height)
        self.plaintext3.setStyleSheet(self.SS_state_explain)
        self.plaintext3.setText(" 當前選擇")
        self.plaintext3.setFont(self.QF_state_explain)

    def setInfBox(self):
        Width=self.Width
        Height=self.Height
        # ---信息標題------------------------------------------
        self.InfTitle_Name=QLabel(self)
        self.InfTitle_Name.setGeometry(0.09*Width,0.28*Height,
                                       0.16*Width,0.05*Height)
        self.InfTitle_Name.setStyleSheet(self.SS_Inf_title)
        self.InfTitle_Name.setText("   姓名:")
        self.InfTitle_Name.setFont(self.QF_Inf_title)
        # ---
        self.InfTitle_Id=QLabel(self)
        self.InfTitle_Id.setGeometry(0.09*Width,0.36*Height,
                                     0.16*Width,0.05*Height)
        self.InfTitle_Id.setStyleSheet(self.SS_Inf_title)
        self.InfTitle_Id.setText("   學號:")
        self.InfTitle_Id.setFont(self.QF_Inf_title)

        # ---信息文本框------------------------------------------
        self.InfBox_Name=QLineEdit(self) 
        self.InfBox_Name.setText("示例:李華") 
        self.InfBox_Name.move(0.3*Width,0.281*Height)  
        self.InfBox_Name.resize(0.6*Width,0.048*Height)
        self.InfBox_Name.setFont(self.QF_Inf_text)
        self.InfBox_Name.setStyleSheet(self.SS_text_Line)
        #self.InfBox_Name.textChanged.connect(self.colorCheckFunc)

        self.InfBox_Id=QLineEdit(self) 
        self.InfBox_Id.setText("示例:XXXXXXXXXXX") 
        self.InfBox_Id.move(0.3*Width,0.361*Height)  
        self.InfBox_Id.resize(0.6*Width,0.048*Height)
        self.InfBox_Id.setFont(self.QF_Inf_text)
        self.InfBox_Id.setStyleSheet(self.SS_text_Line)
        #self.InfBox_ID.textChanged.connect(self.colorCheckFunc)

    def partition(self):# 繪制框線分布
        Width=self.Width
        Height=self.Height
        # ---標題框---------------------------------------------------
        self.part0=QLabel(self)
        self.part0.setGeometry(0.05*Width,0.045*Height,
                               0.52*Width,0.14*Height)
        self.part0.setStyleSheet(self.SS_main_title)
        self.part0.setAlignment(Qt.AlignCenter)
        self.part0.setText(" 自習室預約")
        self.part0.setFont(self.QF_main_title)
        # self.part0title=QLabel(self)
        # self.part0title.setGeometry(0.098*Width,0.06*Height,
        #                             0.43*Width,0.11*Height)
        # self.part0title.setStyleSheet(self.SS_part_title)
        # self.part0title.setText(" 自習室預約")
        # self.part0title.setFont(self.QF_main_title)
        
        # ---信息填寫框-----------------------------------------------
        self.part1=QLabel(self)
        self.part1.setGeometry(0.04*Width,0.23*Height,
                               0.92*Width,0.24*Height)
        self.part1.setStyleSheet(self.SS_part_frame)
        self.part1title=QLabel(self)
        self.part1title.setGeometry(0.08*Width,0.21*Height,
                                    0.15*Width,0.04*Height)
        self.part1title.setStyleSheet(self.SS_part_title)
        self.part1title.setText(" 信息填寫")
        self.part1title.setFont(self.QF_part_title)
    
        # ---座位選擇框------------------------------------------------
        self.part2=QLabel(self)
        self.part2.setGeometry(0.04*Width,0.53*Height,
                               0.92*Width,0.355*Height)
        self.part2.setStyleSheet(self.SS_part_frame)
        self.part1title=QLabel(self)
        self.part1title.setGeometry(0.08*Width,0.51*Height,
                                    0.15*Width,0.04*Height)
        self.part1title.setStyleSheet(self.SS_part_title)
        self.part1title.setText(" 座位選擇")
        self.part1title.setFont(self.QF_part_title)
        # ================================================================================================
        # 可滑動區域部分:
    def setMap(self):
        Width=self.Width
        Height=self.Height
        self.map=QScrollArea(self)
        self.map.setGeometry(0.05*Width,0.545*Height,
                             0.9*Width,0.325*Height)
        self.drawMap()
        self.map.setWidget(self.mapContent)


    def drawMap(self):# 繪制座位地圖
        self.mapContent=QWidget(self)   
        boxWidth=0.9*self.Width
        boxHeight=0.325*self.Height
        
        seatInf=self.seatInf
        seatOccupied=self.seatOccupied
        

        mapWidth=boxWidth*seatInf["mapSize"][0]
        mapHeight=boxHeight*seatInf["mapSize"][1]
        tableSize=seatInf["tableSize"]
        tablePos=seatInf["tablePos"]
        chairSize=seatInf["chairSize"]
        chairPos=seatInf["chairPos"]

        self.mapContent.setGeometry(0,0,mapWidth,mapHeight) 
        self.mapContent.setMaximumSize(mapWidth,mapHeight)
        self.mapContent.setMinimumSize(mapWidth,mapHeight)
        
        for i in range(0,seatInf["tableNum"]):
            table=QLabel(self.mapContent)
            table.setGeometry(tablePos[i][0]*mapWidth,tablePos[i][1]*mapHeight,
                              tableSize[i][0]*mapWidth,tableSize[i][1]*mapHeight)
            table.setText(seatInf["tableId"][i])
            table.setFont(self.QF_table_name)
            table.setAlignment(Qt.AlignCenter)
            table.setStyleSheet(seatInf["tableSS"][seatInf["tableType"][i]])
            for j in range(0,seatInf["chairNum"][i]):
                chairBnt=QPushButton(self.mapContent)
                chairBnt.setGeometry((tablePos[i][0]+chairPos[i][j][0])*mapWidth,
                                     (tablePos[i][1]+chairPos[i][j][1])*mapHeight,
                                     chairSize[0]*mapWidth,
                                     chairSize[1]*mapHeight)

                chairId=seatInf["tableId"][i]+str(j+1)
                if seatOccupied[chairId]:
                    chairBnt.setStyleSheet(seatInf["chairSS_K"])
                else:
                    chairBnt.setStyleSheet(seatInf["chairSS_W"])

                chairBnt.setProperty("chairId",chairId)
                chairBnt.clicked.connect(self.selectedPos)

    def setBookBtn(self):
        Width=self.Width
        Height=self.Height
        self.selectedBox=QLabel(self)
        self.selectedBox.setGeometry(0.54*Width,(0.92)*Height,0.22*Width,0.05*Height)
        self.selectedBox.setStyleSheet(self.SS_state_explain)
        self.selectedBox.setText(" 當前選擇:")
        self.selectedBox.setFont(self.QF_Inf_title)
        
        self.bookBtn=QPushButton(self)
        self.bookBtn.setGeometry(0.79*Width,(0.92)*Height,0.16*Width,0.05*Height)
        self.bookBtn.setStyleSheet(self.SS_book_btn)
        self.bookBtn.setText("預約")
        self.bookBtn.setFont(self.QF_Inf_title)
        self.bookBtn.clicked.connect(self.bookSeat)
# ===========================================================================================
# 函數調用:
myapp = QApplication(sys.argv)
window_main = Window_main(700,840)
window_main.show()
sys.exit(myapp.exec_())

6.2 orderDataDisplay.py

from PySide2.QtWidgets import QApplication, QWidget
from PySide2.QtWidgets import QLabel,QPushButton
from PySide2.QtGui import QIcon,QFont,QPixmap
from PySide2.QtCore import Qt
import sys
sys.path.append("...")
import datetime
from InfOperate import freeSeat,setString

class Window_disp(QWidget):
    def __init__(self,studentName,studentId,bookTime,seatId,Width=700,Height=840):
        super().__init__() 
        self.setWindowTitle("order successfully")
        

        self.studentName=studentName
        self.studentId=studentId
        self.bookTime=bookTime
        self.seatId=seatId
        self.Width=Width
        self.Height=Height

        # path=sys.argv[0]
        # path=path[0:path.rfind("/")]
        self.orderSuccTitlePath="./gallery/order_succ_title.png"
        self.icoPath="./gallery/icon.ico"

        # 字體標簽
        title_qf=QFont()
        title_qf.setPointSize(11)
        title_qf.setBold(True)
        title_qf.setFamily("Cambria")
        Inf_qf=QFont()
        Inf_qf.setPointSize(10)
        Inf_qf.setBold(True)
        Inf_qf.setFamily("Cambria")
        matters_qf=QFont()
        matters_qf.setPointSize(10.5)
        matters_qf.setBold(True)
        matters_qf.setFamily("Cambria")
        # ---
        self.QF_part_title=title_qf         # 框標題字體標簽
        self.QF_Inf_title=title_qf          # 信息標題字體標簽
        self.QF_Inf_text=Inf_qf             # 信息文本字體標簽
        self.QF_matters=matters_qf          # 注意事項字體標簽

        # 樣式表
        self.SS_part_frame="QLabel{background: rgb(245,245,245);color:rgb(92,92,92);border-radius:8px;border: 2.5px solid rgb(122,122,122)}"
        self.SS_part_title="QLabel{background: rgb(245,245,245);color:rgb(92,92,92)}"
        self.SS_Inf_title="QLabel{background: rgb(230,230,230);color:rgb(82,82,82);border-radius:8px}"
        self.SS_text_Line="QLabel{border-radius:3px;background: rgb(205,205,205);color:rgb(82,82,82)}"
        self.SS_book_btn="color:rgb(255,255,255);background: rgb(79,148,204)"

        self.setSize()
        self.setIcon()
        self.setTitle()
        self.partition()
        self.InfDisplay()
        self.mattersDisplay()
        self.setBtn()
    # ================================================================================================
    # 回調函數部分:
    def tempLeave(self):
        if self.tleaveBtn.text()=="暫離":
            setString(self.seatId,"temp")
            nowDate=datetime.datetime.now()
            nowDateStr=nowDate.strftime('%Y-%m-%d %H:%M:%S')
            self.InfBox_Time.setText(nowDateStr) 
            self.tleaveBtn.setText("暫離中")

    def leave(self):
        freeSeat(self.seatId)
        self.close()



    # ================================================================================================
    # 框架構造函數部分:
    def setSize(self):# 調整框架大小
        self.setGeometry(80,80,self.Width,self.Height)
        self.setMaximumSize(self.Width,self.Height)
        self.setMinimumSize(self.Width,self.Height)

    def setIcon(self):# 設置圖標
        appIcon=QIcon(self.icoPath)
        self.setWindowIcon(appIcon)

    def setTitle(self):
        Width=self.Width
        Height=self.Height
        self.Imgbox=QLabel(self)
        self.Imgbox.setGeometry(0.24*Width,0.02*Height,
                                0.52*Width,0.18*Height)
        self.Imgpic=QPixmap(self.orderSuccTitlePath)
        self.Imgpic=self.Imgpic.scaled(0.52*Width,0.18*Height)
        self.Imgbox.setPixmap(self.Imgpic)

    def partition(self):# 繪制框線分布
        Width=self.Width
        Height=self.Height
        # ---信息展示框-----------------------------------------------
        self.part1=QLabel(self)
        self.part1.setGeometry(0.04*Width,0.23*Height,
                               0.92*Width,0.40*Height)
        self.part1.setStyleSheet(self.SS_part_frame)
        self.part1title=QLabel(self)
        self.part1title.setGeometry(0.08*Width,0.21*Height,
                                    0.15*Width,0.04*Height)
        self.part1title.setStyleSheet(self.SS_part_title)
        self.part1title.setText(" 個人信息 ")
        self.part1title.setFont(self.QF_part_title)
        # ---注意事項框-----------------------------------------------
        self.part2=QLabel(self)
        self.part2.setGeometry(0.04*Width,0.67*Height,
                               0.92*Width,0.22*Height)
        self.part2.setStyleSheet(self.SS_part_frame)
        self.part2title=QLabel(self)
        self.part2title.setGeometry(0.08*Width,0.65*Height,
                                    0.15*Width,0.04*Height)
        self.part2title.setStyleSheet(self.SS_part_title)
        self.part2title.setText(" 注意事項")
        self.part2title.setFont(self.QF_part_title)

    def InfDisplay(self):
        Width=self.Width
        Height=self.Height
        # ---信息標題------------------------------------------
        self.InfTitle_Name=QLabel(self)
        self.InfTitle_Name.setGeometry(0.09*Width,0.28*Height,
                                       0.16*Width,0.05*Height)
        self.InfTitle_Name.setStyleSheet(self.SS_Inf_title)
        self.InfTitle_Name.setText("   姓名:")
        self.InfTitle_Name.setFont(self.QF_Inf_title)
        # ---
        self.InfTitle_Id=QLabel(self)
        self.InfTitle_Id.setGeometry(0.09*Width,0.36*Height,
                                     0.16*Width,0.05*Height)
        self.InfTitle_Id.setStyleSheet(self.SS_Inf_title)
        self.InfTitle_Id.setText("   學號:")
        self.InfTitle_Id.setFont(self.QF_Inf_title)
        # ---
        self.InfTitle_Time=QLabel(self)
        self.InfTitle_Time.setGeometry(0.09*Width,0.44*Height,
                                     0.16*Width,0.05*Height)
        self.InfTitle_Time.setStyleSheet(self.SS_Inf_title)
        self.InfTitle_Time.setText("   時間:")
        self.InfTitle_Time.setFont(self.QF_Inf_title)
        # ---
        self.InfTitle_Seat=QLabel(self)
        self.InfTitle_Seat.setGeometry(0.09*Width,0.52*Height,
                                     0.16*Width,0.05*Height)
        self.InfTitle_Seat.setStyleSheet(self.SS_Inf_title)
        self.InfTitle_Seat.setText("   座次:")
        self.InfTitle_Seat.setFont(self.QF_Inf_title)

        # ---信息文本框------------------------------------------
        self.InfBox_Name=QLabel(self) 
        self.InfBox_Name.setText(self.studentName) 
        self.InfBox_Name.move(0.3*Width,0.281*Height)  
        self.InfBox_Name.resize(0.6*Width,0.048*Height)
        self.InfBox_Name.setFont(self.QF_Inf_text)
        self.InfBox_Name.setStyleSheet(self.SS_text_Line)
        self.InfBox_Name.setAlignment(Qt.AlignCenter)
        # ---
        self.InfBox_Id=QLabel(self) 
        self.InfBox_Id.setText(self.studentId) 
        self.InfBox_Id.move(0.3*Width,0.361*Height)  
        self.InfBox_Id.resize(0.6*Width,0.048*Height)
        self.InfBox_Id.setFont(self.QF_Inf_text)
        self.InfBox_Id.setStyleSheet(self.SS_text_Line)
        self.InfBox_Id.setAlignment(Qt.AlignCenter)
        # ---
        self.InfBox_Time=QLabel(self) 
        self.InfBox_Time.setText(self.bookTime) 
        self.InfBox_Time.move(0.3*Width,0.441*Height)  
        self.InfBox_Time.resize(0.6*Width,0.048*Height)
        self.InfBox_Time.setFont(self.QF_Inf_text)
        self.InfBox_Time.setStyleSheet(self.SS_text_Line)
        self.InfBox_Time.setAlignment(Qt.AlignCenter)
        # ---
        self.InfBox_Seat=QLabel(self) 
        self.InfBox_Seat.setText(self.seatId) 
        self.InfBox_Seat.move(0.3*Width,0.521*Height)  
        self.InfBox_Seat.resize(0.6*Width,0.048*Height)
        self.InfBox_Seat.setFont(self.QF_Inf_text)
        self.InfBox_Seat.setStyleSheet(self.SS_text_Line)
        self.InfBox_Seat.setAlignment(Qt.AlignCenter)

    def mattersDisplay(self):
        Width=self.Width
        Height=self.Height
        self.m1=QLabel(self) 
        self.m1.setText("1、預約成功后請在30分鐘內到達,否則預約信息將失效。") 
        self.m1.setGeometry(0.06*Width,0.71*Height,
                            0.87*Width,0.03*Height)
        self.m1.setStyleSheet("QLabel{color:rgb(82,82,82)}")
        self.m1.setFont(self.QF_matters)

        self.m2=QLabel(self) 
        self.m2.setText("2、進入自習室前請刷校園卡核驗信息。") 
        self.m2.setGeometry(0.06*Width,0.75*Height,
                            0.87*Width,0.03*Height)
        self.m2.setStyleSheet("QLabel{color:rgb(82,82,82)}")
        self.m2.setFont(self.QF_matters)

        self.m3=QLabel(self) 
        self.m3.setText("3、如要離開請點擊下方“暫離”按鈕,否則將釋放座位信息。") 
        self.m3.setGeometry(0.06*Width,0.79*Height,
                            0.87*Width,0.03*Height)
        self.m3.setStyleSheet("QLabel{color:rgb(82,82,82)}")
        self.m3.setFont(self.QF_matters)

        self.m4=QLabel(self) 
        self.m4.setText("4、離開、取消預約請點擊下方“離開\取消”按鈕。") 
        self.m4.setGeometry(0.06*Width,0.83*Height,
                            0.87*Width,0.03*Height)
        self.m4.setStyleSheet("QLabel{color:rgb(82,82,82)}")
        self.m4.setFont(self.QF_matters)

    def setBtn(self):
        Width=self.Width
        Height=self.Height
        self.tleaveBtn=QPushButton(self)
        self.tleaveBtn.setGeometry(0.18*Width,(0.92)*Height,0.2*Width,0.05*Height)
        self.tleaveBtn.setStyleSheet(self.SS_book_btn)
        self.tleaveBtn.setText("暫離")
        self.tleaveBtn.setFont(self.QF_Inf_title)
        self.tleaveBtn.clicked.connect(self.tempLeave)

        Width=self.Width
        Height=self.Height
        self.leaveBtn=QPushButton(self)
        self.leaveBtn.setGeometry((1-0.2-0.18)*Width,(0.92)*Height,0.2*Width,0.05*Height)
        self.leaveBtn.setStyleSheet(self.SS_book_btn)
        self.leaveBtn.setText("離開\取消")
        self.leaveBtn.setFont(self.QF_Inf_title)
        self.leaveBtn.clicked.connect(self.leave)

# ===========================================================================================
# 函數調用:
# myapp = QApplication(sys.argv)
# window_disp = Window_disp("李華","1816000XXXX","2021-05-30 17:04:24","A1",700,840)
# window_disp.show()
# myapp.exec_()


def orderDisplay(studentName,studentId,bookTime,seatId,Width=700,Height=840):
    window_disp = Window_disp(studentName,studentId,bookTime,seatId,Width,Height)
    return window_disp

-1 后注

完整代碼、json文件、圖片素材、md文件下載鏈接如下,詳細描述請閱讀README.md文件:more-table_jb51.rar

到此這篇關于python實現簡易自習室座位預約系統的文章就介紹到這了,更多相關python自習室座位預約內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python Requests模擬登錄實現圖書館座位自動預約

標簽:佳木斯 湖北 西寧 珠海 潮州 宜昌 上饒 盤錦

巨人網絡通訊聲明:本文標題《python實現簡易自習室座位預約系統》,本文關鍵詞  python,實現,簡易,自習室,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python實現簡易自習室座位預約系統》相關的同類信息!
  • 本頁收集關于python實現簡易自習室座位預約系統的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 哦┅┅快┅┅用力啊┅┅视频 | 老鸭窝91久久久久精品色| 美女黄频视频免费国产大全| 中文一区二区| 国产91??白丝在线播放| 52呱呱吃瓜爆料黑料网曝门黑料| 久久精品电影久久电影大全 | 91精品国产色综合久久不卡蜜臀| 哺乳喂奶一区二区三区| 国产性夜夜夜春夜夜爽| 高清国产日韩欧美| tiktok国际版下载| 色妇色综合久久夜夜| 男女操操操| 肉色丝袜一区二区高跟鞋| 操到喷水视频| 国产AV精品一区二区三| 女人高潮特黄aaaaa毛片| 欧美高清xxxxbbbbd| 爱我免费视频观看在线www| 歪歪漫画在线观看免费| 大总受肉h快穿c各种受| 美女被????到流水羞羞| 特级一级A片毛片免费视频| 国产黄色毛片| 91麻豆精品秘密秘?入口景甜| 侵犯双性娇嫩小少爷| 乱Lun合集3第43部分| 帅气体育生gary网站mv宏翔| 性感邻居| 性色AV天堂一区二区三区| 九色PORNY丨自拍视频小说| 精品视频免费播放| 瑜伽美女性生交大片| 国产亚洲精品久久久久久移动网络 | 国产JJIZZ女人多水免费| 双性各种师生老师受| 美女操操操| 爱搞视频首页在线| 男女直接做无遮掩视频流水| 美女直播扒开隐私地方|