示例#1
0
    def __init__(self):
        super().__init__()
        self.setObjectName("show_stu_widget")
        #self.check_stu_list()  #一開始就執行動作
        
        layout = QtWidgets.QVBoxLayout()
        header_label = LabelComponent(20, "Show Student")
        

        #"button_update"的設定
        self.button_update = ButtonComponent("Update Student's Info")
        self.button_update.clicked.connect(self.check_stu_list)
        self.button_update.setEnabled(True)
        #"button_update"的設定




        #創立"scroll_area"
        layout_scroll = QtWidgets.QVBoxLayout()  #增加"layout_scroll"

        self.stu_screen = QWidget()  #新增widget
        self.stu_screen.setMinimumSize(400, 200)  #設定size
        self.stu_screen.setLayout(layout_scroll)

        self.scroll_area = QScrollArea()  #新增scoll area
        self.scroll_area.setWidgetResizable(True)
        self.scroll_area.setWidget(self.stu_screen)  #增加到widget裡 
        #創立"scroll_area"
        
        
        #增加label
        self.label_stu_list = LabelComponent(15, "")
        layout_scroll.addWidget(self.label_stu_list)
        #增加label
        
        
        #"layout"中增加widget;先增加的先出現
        layout.addWidget(header_label, stretch=0.5)
        layout.addWidget(self.button_update, stretch=0.5)
        layout.addWidget(self.scroll_area, stretch=0.5)
        #"layout"中增加widget;先增加的先出現

        self.setLayout(layout)  #顯示layout
示例#2
0
    def __init__(self):
        super().__init__()
        self.setObjectName("modify_stu_widget")

        layout = QtWidgets.QVBoxLayout()

        header_label = LabelComponent(20, "Modify Student")
        self.modify_widget = ModifyWidget()

        layout.addWidget(header_label, stretch=1)
        layout.addWidget(self.modify_widget, stretch=8)
        self.setLayout(layout)
示例#3
0
    def __init__(self, ):
        super().__init__()
        self.setObjectName("main_widget")

        layout = QtWidgets.QGridLayout()
        header_label = LabelComponent(24, "Student Management System")
        function_widget = FunctionWidget()
        menu_widget = MenuWidget(function_widget.update_widget)

        layout.addWidget(header_label, 0, 0, 1, 2)
        layout.addWidget(menu_widget, 1, 0, 1, 1)
        layout.addWidget(function_widget, 1, 1, 1, 1)

        layout.setColumnStretch(0, 1)
        layout.setColumnStretch(1, 6)
        layout.setRowStretch(0, 1)
        layout.setRowStretch(1, 6)

        self.setLayout(layout)
示例#4
0
    def __init__(self):
        super().__init__()
        self.setObjectName("modify_stu_widget")
        self.stu_list = {}
        self.stu_list["name"] = {}
        self.stu_list["scores"] = {}
        self.query_name = False

        self.modify_data = {}
        self.modify_data["stu_id"] = {}
        self.modify_data["scores_dict"] = {}

        layout = QtWidgets.QVBoxLayout()

        self.label_hint = HintLabelComponent(15, "")

        #Name
        layout_name = QtWidgets.QGridLayout()
        self.screen_name = QtWidgets.QWidget()
        self.screen_name.setLayout(layout_name)

        label_name = LabelComponent(16, "Name: ")

        self.edit_label_name = LineEditComponent("Name")
        self.edit_label_name.mousePressEvent = self.press_edit_label_name_action

        self.button_query = ButtonComponent("Query")
        self.button_query.clicked.connect(self.confirm_query)

        layout_name.addWidget(label_name, 0, 0, 1, 1)
        layout_name.addWidget(self.edit_label_name, 0, 1, 1, 1)
        layout_name.addWidget(self.button_query, 0, 2, 1, 1)

        #設定各別row所占的比例
        layout_name.setRowStretch(0, 1)
        #設定各別row所占的比例

        #設定各別col所占的比例
        layout_name.setColumnStretch(0, 1)
        layout_name.setColumnStretch(1, 2)
        layout_name.setColumnStretch(2, 1)
        #設定各別col所占的比例
        #Name

        #Change a current score
        layout_change = QtWidgets.QGridLayout()
        self.screen_change = QtWidgets.QWidget()
        self.screen_change.setLayout(layout_change)

        self.radio_button_change = QtWidgets.QRadioButton(
            'Change a current score:')

        self.edit_label_score = LineEditComponent("")
        self.edit_label_score.mousePressEvent = self.press_edit_label_score_action

        self.combo_box_score = QtWidgets.QComboBox()
        self.combo_box_score.addItems(list())
        self.combo_box_score.currentIndexChanged.connect(
            self.combo_box_select_changed)

        layout_change.addWidget(self.radio_button_change, 0, 0, 1, 1)

        layout_change.addWidget(self.combo_box_score, 1, 0, 1, 1)
        layout_change.addWidget(self.edit_label_score, 1, 1, 1, 1)

        #設定各別row所占的比例
        layout_change.setRowStretch(0, 1)
        layout_change.setRowStretch(1, 1)
        #設定各別row所占的比例

        #設定各別col所占的比例
        layout_change.setColumnStretch(0, 1)
        layout_change.setColumnStretch(1, 4)
        layout_change.setColumnStretch(2, 1)
        #設定各別col所占的比例

        #Change a current score

        #Add a new score
        layout_add = QtWidgets.QGridLayout()
        self.screen_add = QtWidgets.QWidget()
        self.screen_add.setLayout(layout_add)

        self.radio_button_add = QtWidgets.QRadioButton('Add a new score')
        label_subject = LabelComponent(16, "Subject: ")

        self.edit_label_subject = LineEditComponent("Subject")
        self.edit_label_subject.mousePressEvent = self.press_edit_label_subject_action

        label_score = LabelComponent(16, "Score: ")

        self.edit_label_score_2 = LineEditComponent("Score")
        self.edit_label_score_2.mousePressEvent = self.press_edit_label_score_2_action

        layout_add.addWidget(self.radio_button_add, 0, 0, 1, 1)

        layout_add.addWidget(label_subject, 1, 0, 1, 2)
        layout_add.addWidget(self.edit_label_subject, 1, 1, 1, 1)

        layout_add.addWidget(label_score, 2, 0, 1, 2)
        layout_add.addWidget(self.edit_label_score_2, 2, 1, 1, 1)

        #設定各別row所占的比例
        layout_add.setRowStretch(0, 1)
        layout_add.setRowStretch(1, 1)
        layout_add.setRowStretch(2, 1)
        #設定各別row所占的比例

        #設定各別col所占的比例
        layout_add.setColumnStretch(0, 1)
        layout_add.setColumnStretch(1, 4)
        layout_add.setColumnStretch(2, 1)
        #設定各別col所占的比例
        #Add a new score

        #Confirm
        layout_confirm = QtWidgets.QGridLayout()
        self.screen_confirm = QtWidgets.QWidget()
        self.screen_confirm.setLayout(layout_confirm)

        self.button_confirm = ButtonComponent("Confirm")
        self.button_confirm.clicked.connect(self.confirm_send)

        layout_confirm.addWidget(self.button_confirm, 0, 1, 1, 1)

        #設定各別row所占的比例
        layout_confirm.setRowStretch(0, 1)
        #設定各別row所占的比例

        #設定各別col所占的比例
        layout_confirm.setColumnStretch(0, 4)
        layout_confirm.setColumnStretch(1, 1)
        #設定各別col所占的比例
        #Confirm

        self.radio_button_change.toggled.connect(
            self.radio_button_change_on_clicked)
        self.radio_button_add.toggled.connect(self.radio_button_add_on_clicked)

        layout.addWidget(self.label_hint, stretch=1)
        layout.addWidget(self.screen_name, stretch=1)
        layout.addWidget(self.screen_change, stretch=1)
        layout.addWidget(self.screen_add, stretch=1)
        layout.addWidget(self.screen_confirm, stretch=1)

        self.setLayout(layout)
示例#5
0
class ShowStuWidget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setObjectName("show_stu_widget")
        #self.check_stu_list()  #一開始就執行動作
        
        layout = QtWidgets.QVBoxLayout()
        header_label = LabelComponent(20, "Show Student")
        

        #"button_update"的設定
        self.button_update = ButtonComponent("Update Student's Info")
        self.button_update.clicked.connect(self.check_stu_list)
        self.button_update.setEnabled(True)
        #"button_update"的設定




        #創立"scroll_area"
        layout_scroll = QtWidgets.QVBoxLayout()  #增加"layout_scroll"

        self.stu_screen = QWidget()  #新增widget
        self.stu_screen.setMinimumSize(400, 200)  #設定size
        self.stu_screen.setLayout(layout_scroll)

        self.scroll_area = QScrollArea()  #新增scoll area
        self.scroll_area.setWidgetResizable(True)
        self.scroll_area.setWidget(self.stu_screen)  #增加到widget裡 
        #創立"scroll_area"
        
        
        #增加label
        self.label_stu_list = LabelComponent(15, "")
        layout_scroll.addWidget(self.label_stu_list)
        #增加label
        
        
        #"layout"中增加widget;先增加的先出現
        layout.addWidget(header_label, stretch=0.5)
        layout.addWidget(self.button_update, stretch=0.5)
        layout.addWidget(self.scroll_area, stretch=0.5)
        #"layout"中增加widget;先增加的先出現

        self.setLayout(layout)  #顯示layout

    def check_stu_list(self) :
        self.check_send = ExcuteCommand(command = "show", data = dict())
        self.check_send.start()
        self.check_send.return_sig.connect(self.show_stu_list)  #將信號連接到指定槽函數
        

    def show_stu_list(self, result) :
        result = json.loads(result)

        student_list = result['parameters']  #提取"parameters"資料,也就是我們需要的"student_list"
        #self.hint_label.setText("Add {} successfully".format(self.stu_list))
        #print("self.stu_list : {}".format(student_list))

        #print ("\n==== student list ====")

        """
        self.label_stu_list_top = QtWidgets.QLabel(self.stu_screen)
        self.label_stu_list_top.setText("====== student list ======")
        self.label_stu_list_top.setFont(QtGui.QFont("微軟正黑體", 15, QtGui.QFont.Bold))
        """

        i = 1  #控制移動座標
        stu_list_content = "====== student list ======\n"
        for student_info in student_list :
            #print("student_info : \n{}".format(student_info))
            #print("\nName : {}".format(student_info["name"]))
            stu_list_content += "\nName : {}\n".format(student_info["name"])
            """
            #顯示name在GUI
            self.label_name = QtWidgets.QLabel(self.stu_screen)
            self.label_name.setText("Name : {}".format(student_info["name"]))
            self.label_name.setFont(QtGui.QFont("微軟正黑體", 15, QtGui.QFont.Bold))
            self.label_name.move(0, 40*i)  #移動座標
            #顯示name在GUI
            """

            i = i+1  #只要顯示一行,就要移動位置

            for subject in student_info["scores"] :

                scores = student_info["scores"]
                #print(type(subject))  #"str"
                #print("  subject : {}, score : {}".format(subject, scores[subject]))
                
                stu_list_content += "  subject : {}, score : {}\n".format(subject, scores[subject])
                """
                #顯示subject和score在GUI
                self.label_sub_n_score = QtWidgets.QLabel(self.stu_screen)
                self.label_sub_n_score.setText("    subject : {}, score : {}".format(subject, scores[subject]))
                self.label_sub_n_score.setFont(QtGui.QFont("微軟正黑體", 15, QtGui.QFont.Bold))
                self.label_sub_n_score.move(0, 40*i)
                i = i+1
                #顯示subject和score在GUI
                """

                #print(score.keys())

        #print ("\n======================")
        stu_list_content += "\n======================\n"

        self.label_stu_list.setText(stu_list_content)  #在GUI顯示"stu_list_content"
        #print(stu_list_content)
        """
        self.label_stu_list_bottom = QtWidgets.QLabel(self.stu_screen)
        self.label_stu_list_bottom.setText("======================")
        self.label_stu_list_bottom.setFont(QtGui.QFont("微軟正黑體", 15, QtGui.QFont.Bold))
        self.label_stu_list_bottom.move(0, 40*i)
        """

        
    def load(self):
        self.check_stu_list()
        print("show widget")
示例#6
0
    def __init__(self):
        super().__init__()
        self.setObjectName("add_stu_widget")
        #"stu_list"初始化
        self.stu_list = {}
        self.stu_list["name"] = {}
        self.stu_list["scores"] = {}
        #"stu_list"初始化


        self.query_name = False  #紀錄是否有輸入"name"且"query"過了
        self.input_subject = False  #紀錄是否有增加過"subject"和"score"了

        layout = QtWidgets.QGridLayout()  #相對的layout

        #設定widget
        header_label = LabelComponent(20, "Add Student")
        name_label = LabelComponent(16, "Name: ")
        subject_label = LabelComponent(16, "Subject: ")
        score_label = LabelComponent(16, "Score: ")
        self.hint_label = HintLabelComponent(15, "")

        self.edit_name_label = LineEditComponent("Name")
        self.edit_name_label.mousePressEvent = self.press_name_label_action
        
        self.edit_subject_label = LineEditComponent("Subject")
        self.edit_subject_label.mousePressEvent = self.press_subject_label_action

        self.edit_score_label = LineEditComponent()
        self.edit_score_label.mousePressEvent = self.press_score_label_action
        self.edit_score_label.setValidator(QtGui.QIntValidator(1, 100))  #限制只能輸入"int",且範圍在"三位數內"

        #"button_query"的設定
        self.button_query = ButtonComponent("Query")
        self.button_query.clicked.connect(self.confirm_query)
        #"button_query"的設定

        #"button_add"的設定
        self.button_add = ButtonComponent("Add")
        self.button_add.clicked.connect(self.confirm_add)
        #"button_add"的設定
        
        #"button_send"的設定
        self.button_send = ButtonComponent("Send")
        self.button_send.clicked.connect(self.confirm_send)
        self.button_send.setEnabled(True)  #初始設定將btn不能按,但"button_send"要可以按,所以設定為"True"
        #"button_send"的設定

        #設定widget
        

        #layout widget
        layout.addWidget(header_label, 0, 0, 1, 2)  #設定在(row, col)然後占用多少(row, col)
        layout.addWidget(name_label, 1, 0, 1, 1)
        layout.addWidget(subject_label, 2, 0, 1, 1)
        layout.addWidget(score_label, 3, 0, 1, 1)
        layout.addWidget(self.hint_label, 0, 3, 4, 2)
        layout.addWidget(self.edit_name_label, 1, 1, 1, 1)
        layout.addWidget(self.edit_subject_label, 2, 1, 1, 1)
        layout.addWidget(self.edit_score_label, 3, 1, 1, 1)
        layout.addWidget(self.button_query, 1, 2, 1, 1)
        layout.addWidget(self.button_add, 3, 2, 1, 1)
        layout.addWidget(self.button_send, 6, 3, 1, 1)
        #layout widget

        #設定各別col所占的比例
        layout.setColumnStretch(0, 2)  
        layout.setColumnStretch(1, 3)
        layout.setColumnStretch(2, 2)
        layout.setColumnStretch(3, 3.5)
        #設定各別col所占的比例

        #設定各別row所占的比例
        layout.setRowStretch(0, 1)
        layout.setRowStretch(1, 2)
        layout.setRowStretch(2, 2)
        layout.setRowStretch(3, 2)
        layout.setRowStretch(4, 2)
        layout.setRowStretch(5, 2)
        layout.setRowStretch(6, 2)
        #設定各別row所占的比例

        self.setLayout(layout)