Files
JITToolBox/ui/pyui/sub/picker.py
2025-06-29 00:21:04 +08:00

104 lines
3.4 KiB
Python

import sys
from PySide6.QtCore import Signal
from PySide6.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QApplication, QGridLayout
from qfluentwidgets import PushButton, SpinBox, PrimaryPushButton, \
BodyLabel, CardWidget, SimpleCardWidget, FluentStyleSheet
from qfluentwidgets.components.widgets.card_widget import CardSeparator
from ui.components.widget import RollingTextWidget
class QuickScoringKeyBoard(QWidget):
scoringSignal = Signal(int)
def __init__(self, parent=None):
super().__init__(parent)
self.vBoxLayout = QVBoxLayout(self)
self.keyBoardLayout = QGridLayout()
buttons = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 100]
for i, num in enumerate(buttons):
row = i // 3
col = i % 3
btn = PushButton(str(num))
btn.setFixedWidth(120)
btn.clicked.connect(lambda _, n=num: self.scoringSignal.emit(n))
self.keyBoardLayout.addWidget(btn, row, col)
self.vBoxLayout.addLayout(self.keyBoardLayout)
class QuickScoring(QWidget):
submitSignal = Signal(int)
def __init__(self, parent=None):
super().__init__(parent)
self.hBoxLayout = QHBoxLayout(self)
self.btnVBoxLayout = QVBoxLayout(self)
self.spinboxLayout = QHBoxLayout(self)
self.spinboxLabel = BodyLabel("得分", self)
self.gradeSpinBox = SpinBox(self)
self.submitButton = PrimaryPushButton("确定", self)
self.resetButton = PushButton("重置", self)
self.keyboard = QuickScoringKeyBoard(self)
self.gradeSpinBox.setRange(0, 100)
self.submitButton.setFixedWidth(120)
self.resetButton.setFixedWidth(120)
self.spinboxLayout.addWidget(self.spinboxLabel)
self.spinboxLayout.addWidget(self.gradeSpinBox)
self.btnVBoxLayout.addStretch()
self.btnVBoxLayout.addWidget(self.submitButton)
self.btnVBoxLayout.addWidget(self.resetButton)
self.btnVBoxLayout.addStretch()
self.hBoxLayout.addStretch()
self.hBoxLayout.addLayout(self.spinboxLayout)
self.hBoxLayout.addLayout(self.btnVBoxLayout)
self.hBoxLayout.addWidget(self.keyboard)
self.hBoxLayout.addStretch()
self.keyboard.scoringSignal.connect(lambda x: self.gradeSpinBox.setValue(x))
self.resetButton.clicked.connect(lambda: self.gradeSpinBox.clear())
self.submitButton.clicked.connect(lambda: self.submitSignal.emit(self.gradeSpinBox.value()))
class PickStudentLabelUi(SimpleCardWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.vBoxLayout = QVBoxLayout(self)
self.vBoxLayout.setContentsMargins(0, 0, 0, 0)
self.rollingText = RollingTextWidget(self)
self.scoring = QuickScoring(self)
self.separator = CardSeparator(self)
self.scoring.hide()
self.separator.hide()
self.vBoxLayout.addWidget(self.rollingText)
self.vBoxLayout.addWidget(self.separator)
self.vBoxLayout.addWidget(self.scoring)
self.vBoxLayout.addStretch()
def show_scoring(self):
self.scoring.show()
self.separator.show()
def hideEvent(self, event, /):
super().hideEvent(event)
self.scoring.gradeSpinBox.clear()
self.scoring.hide()
self.separator.hide()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = PickStudentLabelUi()
window.show()
sys.exit(app.exec())