python 간이 자습 실 좌석 예약 시스템 구현

python 을 공부 한 지 얼마 되 지 않 았 습 니 다.문제 가 있 으 면 지적 을 받 고 싶 습 니 다.
0 효과
좌석 선택 상자
在这里插入图片描述
在这里插入图片描述
1 필요 한 라 이브 러 리
Python 환경 에 다음 python 패 키 지 를 설치 해 야 합 니 다.
  • PySide2
  • datetime
  • json
  • argparse
  • 2.좌석 선택 상자
    상자 안의 책상 의 수량,크기,스타일 과 모든 의자 의 위 치 를 선택 하 십시오.예 를 들 어 우 리 는 책상 의 색깔 과 원 각 을 바 꿀 수 있 습 니 다.
    在这里插入图片描述
    이것 은 주로 seat Inf.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_주문 예약
    
    > 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_카드 로 들어가다
    
    > 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.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 자습 실 좌석 예약 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기