wip: better ui responsive

This commit is contained in:
2023-09-07 17:55:07 +08:00
parent 8c5d7ae414
commit 88bd04ad92
4 changed files with 206 additions and 172 deletions

View File

@ -13,182 +13,193 @@
<property name="windowTitle"> <property name="windowTitle">
<string notr="true">OcrQueue</string> <string notr="true">OcrQueue</string>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_5">
<item> <item>
<widget class="QGroupBox" name="groupBox_3"> <layout class="QHBoxLayout" name="horizontalLayout">
<property name="title">
<string>queue.title</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>iccOptionsGroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QRadioButton" name="iccIgnoreRadioButton">
<property name="text">
<string>icc.ignore</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="iccUsePILRadioButton">
<property name="text">
<string>icc.usePIL</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="iccTryFixRadioButton">
<property name="text">
<string>icc.tryFix</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QPushButton" name="ocr_addImageButton">
<property name="text">
<string>queue.addImageButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ocr_removeSelectedButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>queue.removeSelected</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ocr_removeAllButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>queue.removeAll</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="ocr_startButton">
<property name="text">
<string>queue.startOcrButton</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>
<widget class="QTableView" name="tableView"> <widget class="QGroupBox" name="groupBox_3">
<property name="editTriggers"> <property name="title">
<set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set> <string>queue.title</string>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="verticalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property>
<property name="horizontalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>iccOptionsGroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QRadioButton" name="iccIgnoreRadioButton">
<property name="text">
<string>icc.ignore</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="iccUsePILRadioButton">
<property name="text">
<string>icc.usePIL</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="iccTryFixRadioButton">
<property name="text">
<string>icc.tryFix</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QPushButton" name="ocr_addImageButton">
<property name="text">
<string>queue.addImageButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ocr_removeSelectedButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>queue.removeSelected</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ocr_removeAllButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>queue.removeAll</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="ocr_startButton">
<property name="text">
<string>queue.startOcrButton</string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QProgressBar" name="progressBar"> <layout class="QVBoxLayout" name="verticalLayout_3">
<property name="minimum"> <item>
<number>0</number> <widget class="QTableView" name="tableView">
</property> <property name="editTriggers">
<property name="maximum"> <set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
<number>0</number> </property>
</property> <property name="selectionMode">
<property name="value"> <enum>QAbstractItemView::MultiSelection</enum>
<number>0</number> </property>
</property> <property name="selectionBehavior">
<property name="alignment"> <enum>QAbstractItemView::SelectRows</enum>
<set>Qt::AlignCenter</set> </property>
</property> <property name="verticalScrollMode">
<property name="format"> <enum>QAbstractItemView::ScrollPerPixel</enum>
<string notr="true">%v/%m - %p%</string> </property>
<property name="horizontalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property>
</widget>
</item>
<item>
<widget class="QProgressBar" name="progressBar">
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>0</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="format">
<string notr="true">%v/%m - %p%</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="title">
<string>results</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QPushButton" name="ocr_acceptSelectedButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>results.acceptSelectedButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ocr_acceptAllButton">
<property name="text">
<string>results.acceptAllButton</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="ocr_ignoreValidateCheckBox">
<property name="text">
<string>results.ignoreValidate</string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
<item> <item>
<widget class="QGroupBox" name="groupBox_5"> <widget class="QLabel" name="statusLabel">
<property name="title"> <property name="text">
<string>results</string> <string/>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QPushButton" name="ocr_acceptSelectedButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>results.acceptSelectedButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ocr_acceptAllButton">
<property name="text">
<string>results.acceptAllButton</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="ocr_ignoreValidateCheckBox">
<property name="text">
<string>results.ignoreValidate</string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
</layout> </layout>

View File

@ -16,9 +16,9 @@ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QImage, QKeySequence, QLinearGradient, QPainter, QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform) QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QAbstractItemView, QApplication, QCheckBox, QGroupBox, from PySide6.QtWidgets import (QAbstractItemView, QApplication, QCheckBox, QGroupBox,
QHBoxLayout, QHeaderView, QProgressBar, QPushButton, QHBoxLayout, QHeaderView, QLabel, QProgressBar,
QRadioButton, QSizePolicy, QSpacerItem, QTableView, QPushButton, QRadioButton, QSizePolicy, QSpacerItem,
QVBoxLayout, QWidget) QTableView, QVBoxLayout, QWidget)
class Ui_OcrQueue(object): class Ui_OcrQueue(object):
def setupUi(self, OcrQueue): def setupUi(self, OcrQueue):
@ -26,8 +26,10 @@ class Ui_OcrQueue(object):
OcrQueue.setObjectName(u"OcrQueue") OcrQueue.setObjectName(u"OcrQueue")
OcrQueue.resize(650, 400) OcrQueue.resize(650, 400)
OcrQueue.setWindowTitle(u"OcrQueue") OcrQueue.setWindowTitle(u"OcrQueue")
self.horizontalLayout_2 = QHBoxLayout(OcrQueue) self.verticalLayout_5 = QVBoxLayout(OcrQueue)
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2") self.verticalLayout_5.setObjectName(u"verticalLayout_5")
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.groupBox_3 = QGroupBox(OcrQueue) self.groupBox_3 = QGroupBox(OcrQueue)
self.groupBox_3.setObjectName(u"groupBox_3") self.groupBox_3.setObjectName(u"groupBox_3")
self.verticalLayout_2 = QVBoxLayout(self.groupBox_3) self.verticalLayout_2 = QVBoxLayout(self.groupBox_3)
@ -82,7 +84,7 @@ class Ui_OcrQueue(object):
self.verticalLayout_2.addWidget(self.ocr_startButton) self.verticalLayout_2.addWidget(self.ocr_startButton)
self.horizontalLayout_2.addWidget(self.groupBox_3) self.horizontalLayout.addWidget(self.groupBox_3)
self.verticalLayout_3 = QVBoxLayout() self.verticalLayout_3 = QVBoxLayout()
self.verticalLayout_3.setObjectName(u"verticalLayout_3") self.verticalLayout_3.setObjectName(u"verticalLayout_3")
@ -107,7 +109,7 @@ class Ui_OcrQueue(object):
self.verticalLayout_3.addWidget(self.progressBar) self.verticalLayout_3.addWidget(self.progressBar)
self.horizontalLayout_2.addLayout(self.verticalLayout_3) self.horizontalLayout.addLayout(self.verticalLayout_3)
self.groupBox_5 = QGroupBox(OcrQueue) self.groupBox_5 = QGroupBox(OcrQueue)
self.groupBox_5.setObjectName(u"groupBox_5") self.groupBox_5.setObjectName(u"groupBox_5")
@ -134,7 +136,15 @@ class Ui_OcrQueue(object):
self.verticalLayout_4.addWidget(self.ocr_ignoreValidateCheckBox) self.verticalLayout_4.addWidget(self.ocr_ignoreValidateCheckBox)
self.horizontalLayout_2.addWidget(self.groupBox_5) self.horizontalLayout.addWidget(self.groupBox_5)
self.verticalLayout_5.addLayout(self.horizontalLayout)
self.statusLabel = QLabel(OcrQueue)
self.statusLabel.setObjectName(u"statusLabel")
self.verticalLayout_5.addWidget(self.statusLabel)
self.retranslateUi(OcrQueue) self.retranslateUi(OcrQueue)
@ -156,6 +166,7 @@ class Ui_OcrQueue(object):
self.ocr_acceptSelectedButton.setText(QCoreApplication.translate("OcrQueue", u"results.acceptSelectedButton", None)) self.ocr_acceptSelectedButton.setText(QCoreApplication.translate("OcrQueue", u"results.acceptSelectedButton", None))
self.ocr_acceptAllButton.setText(QCoreApplication.translate("OcrQueue", u"results.acceptAllButton", None)) self.ocr_acceptAllButton.setText(QCoreApplication.translate("OcrQueue", u"results.acceptAllButton", None))
self.ocr_ignoreValidateCheckBox.setText(QCoreApplication.translate("OcrQueue", u"results.ignoreValidate", None)) self.ocr_ignoreValidateCheckBox.setText(QCoreApplication.translate("OcrQueue", u"results.ignoreValidate", None))
self.statusLabel.setText("")
pass pass
# retranslateUi # retranslateUi

View File

@ -43,6 +43,10 @@ class OcrQueue(Ui_OcrQueue, QWidget):
self.iccOptionButtonGroup.addButton(self.iccTryFixRadioButton, 2) self.iccOptionButtonGroup.addButton(self.iccTryFixRadioButton, 2)
self.updateIccOption() self.updateIccOption()
self.statusLabelClearTimer = QTimer(self)
self.statusLabelClearTimer.setSingleShot(True)
self.statusLabelClearTimer.timeout.connect(self.clearStatusMessage)
def model(self): def model(self):
return self.__model return self.__model
@ -88,6 +92,13 @@ class OcrQueue(Ui_OcrQueue, QWidget):
if self.model(): if self.model():
self.model().iccOption = self.iccOptionButtonGroup.checkedId() self.model().iccOption = self.iccOptionButtonGroup.checkedId()
def showStatusMessage(self, message: str):
self.statusLabel.setText(message)
self.statusLabelClearTimer.start()
def clearStatusMessage(self):
self.statusLabel.setText("")
def resizeTableView(self): def resizeTableView(self):
self.tableView.resizeRowsToContents() self.tableView.resizeRowsToContents()
self.tableView.resizeColumnsToContents() self.tableView.resizeColumnsToContents()

View File

@ -7,7 +7,7 @@ from arcaea_offline_ocr.device.v1.definition import DeviceV1
from arcaea_offline_ocr.device.v2.definition import DeviceV2 from arcaea_offline_ocr.device.v2.definition import DeviceV2
from arcaea_offline_ocr.sift_db import SIFTDatabase from arcaea_offline_ocr.sift_db import SIFTDatabase
from PySide6.QtCore import Qt, Slot from PySide6.QtCore import Qt, Slot
from PySide6.QtWidgets import QFileDialog, QWidget from PySide6.QtWidgets import QApplication, QFileDialog, QWidget
from ui.designer.tabs.tabOcr.tabOcr_Device_ui import Ui_TabOcr_Device from ui.designer.tabs.tabOcr.tabOcr_Device_ui import Ui_TabOcr_Device
from ui.extends.components.ocrQueue import OcrQueueModel from ui.extends.components.ocrQueue import OcrQueueModel
@ -101,6 +101,7 @@ class TabOcr_Device(Ui_TabOcr_Device, QWidget):
) )
for file in files: for file in files:
self.ocrQueueModel.addItem(file) self.ocrQueueModel.addItem(file)
QApplication.processEvents()
self.ocrQueue.resizeTableView() self.ocrQueue.resizeTableView()
@Slot() @Slot()