Skip to content

Commit f2827c4

Browse files
committed
Update UI
1 parent 0dadc34 commit f2827c4

File tree

4 files changed

+344
-243
lines changed

4 files changed

+344
-243
lines changed

examples/official/9.x/qt_gui/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ This is a cross-platform GUI barcode reader application built with `Python 3`, `
3939
The advanced demo supports reading barcodes from image files, webcam, and desktop screenshots:
4040

4141
```
42-
pyside2-uic design.ui -o design.py
42+
pyside6-uic design.ui -o design.py
4343
python3 app_advanced.py license.txt
4444
```
4545

examples/official/9.x/qt_gui/barcode_manager.py

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,10 @@ def __init__(self):
6565
self._template = None
6666
self._types = 0
6767
self._types2 = 0
68-
69-
self.frameQueue, self.resultQueue, self.barcodeScanning = None, None, None
68+
self.barcodeScanning = None
69+
size = 1
70+
self.frameQueue = Queue(size)
71+
self.resultQueue = Queue(size)
7072

7173
def __init_params(self):
7274
if self._template != None and self._template != '':
@@ -165,14 +167,15 @@ def set_barcode_types(self, types):
165167
def set_barcode_types_2(self, types):
166168
self._types2 = types
167169

168-
def create_barcode_process(self):
169-
self.destroy_barcode_process()
170-
170+
def initQueue(self):
171171
size = 1
172172
self.frameQueue = Queue(size)
173173
self.resultQueue = Queue(size)
174-
self.barcodeScanning = Process(target=process_barcode_frame, args=(
175-
self.frameQueue, self.resultQueue, self._template, self._types, self._types2))
174+
175+
def create_barcode_process(self):
176+
self.destroy_barcode_process()
177+
self.initQueue()
178+
self.barcodeScanning = Process(target=process_barcode_frame, args=(self.frameQueue, self.resultQueue, self._template, self._types, self._types2))
176179
self.barcodeScanning.start()
177180

178181
def destroy_barcode_process(self):
@@ -189,12 +192,18 @@ def destroy_barcode_process(self):
189192
self.frameQueue = None
190193

191194
if self.resultQueue != None:
195+
while not self.resultQueue.empty():
196+
try:
197+
self.resultQueue.get(timeout=0.001)
198+
except:
199+
pass
192200
self.resultQueue.close()
193201
self.resultQueue = None
194202

195203
def append_frame(self, frame):
196204
try:
197-
self.frameQueue.put(frame.copy(), False, 10)
205+
if self.frameQueue != None:
206+
self.frameQueue.put(frame.copy(), False, 10)
198207
except:
199208
pass
200209

@@ -209,3 +218,16 @@ def get_template(self):
209218

210219
def set_license(self, key):
211220
BarcodeReader.init_license(key)
221+
def decodeLatestFrame(self):
222+
try:
223+
frame = self.frameQueue.get(False, 10)
224+
if type(frame) is str:
225+
return None
226+
227+
start = time.time()
228+
results = self._reader.decode_buffer(frame)
229+
end = time.time()
230+
return [results, (end - start) * 1000]
231+
except Exception as e:
232+
time.sleep(0.01)
233+
return None

examples/official/9.x/qt_gui/design.py

Lines changed: 109 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,31 @@
33
################################################################################
44
## Form generated from reading UI file 'design.ui'
55
##
6-
## Created by: Qt User Interface Compiler version 5.15.1
6+
## Created by: Qt User Interface Compiler version 6.7.2
77
##
88
## WARNING! All changes made in this file will be lost when recompiling UI file!
99
################################################################################
1010

11-
from PySide6.QtCore import *
12-
from PySide6.QtGui import *
13-
from PySide6.QtWidgets import *
14-
11+
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12+
QMetaObject, QObject, QPoint, QRect,
13+
QSize, QTime, QUrl, Qt)
14+
from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
15+
QCursor, QFont, QFontDatabase, QGradient,
16+
QIcon, QImage, QKeySequence, QLinearGradient,
17+
QPainter, QPalette, QPixmap, QRadialGradient,
18+
QTransform)
19+
from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QGridLayout,
20+
QGroupBox, QLabel, QListWidget, QListWidgetItem,
21+
QMainWindow, QMenu, QMenuBar, QPushButton,
22+
QSizePolicy, QStatusBar, QTabWidget, QTextEdit,
23+
QWidget)
1524

1625
class Ui_MainWindow(object):
1726
def setupUi(self, MainWindow):
1827
if not MainWindow.objectName():
1928
MainWindow.setObjectName(u"MainWindow")
20-
MainWindow.resize(1600, 848)
21-
sizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
29+
MainWindow.resize(1819, 998)
30+
sizePolicy = QSizePolicy(QSizePolicy.Policy.Maximum, QSizePolicy.Policy.Maximum)
2231
sizePolicy.setHorizontalStretch(0)
2332
sizePolicy.setVerticalStretch(0)
2433
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
@@ -38,51 +47,30 @@ def setupUi(self, MainWindow):
3847
self.actionEnter_License_Key.setObjectName(u"actionEnter_License_Key")
3948
self.centralwidget = QWidget(MainWindow)
4049
self.centralwidget.setObjectName(u"centralwidget")
41-
sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
50+
sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
4251
sizePolicy1.setHorizontalStretch(0)
4352
sizePolicy1.setVerticalStretch(0)
4453
sizePolicy1.setHeightForWidth(self.centralwidget.sizePolicy().hasHeightForWidth())
4554
self.centralwidget.setSizePolicy(sizePolicy1)
4655
self.gridLayout = QGridLayout(self.centralwidget)
4756
self.gridLayout.setObjectName(u"gridLayout")
48-
self.groupBox_camera = QGroupBox(self.centralwidget)
49-
self.groupBox_camera.setObjectName(u"groupBox_camera")
50-
sizePolicy2 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
57+
self.listWidget = QListWidget(self.centralwidget)
58+
self.listWidget.setObjectName(u"listWidget")
59+
sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expanding)
5160
sizePolicy2.setHorizontalStretch(0)
5261
sizePolicy2.setVerticalStretch(0)
53-
sizePolicy2.setHeightForWidth(self.groupBox_camera.sizePolicy().hasHeightForWidth())
54-
self.groupBox_camera.setSizePolicy(sizePolicy2)
55-
self.groupBox_camera.setMinimumSize(QSize(450, 150))
56-
self.comboBox = QComboBox(self.groupBox_camera)
57-
self.comboBox.addItem("")
58-
self.comboBox.addItem("")
59-
self.comboBox.setObjectName(u"comboBox")
60-
self.comboBox.setGeometry(QRect(180, 50, 101, 31))
61-
self.label_2 = QLabel(self.groupBox_camera)
62-
self.label_2.setObjectName(u"label_2")
63-
self.label_2.setGeometry(QRect(90, 50, 131, 31))
64-
font = QFont()
65-
font.setPointSize(10)
66-
self.label_2.setFont(font)
67-
self.pushButton_open = QPushButton(self.groupBox_camera)
68-
self.pushButton_open.setObjectName(u"pushButton_open")
69-
self.pushButton_open.setGeometry(QRect(90, 90, 93, 28))
70-
self.pushButton_stop = QPushButton(self.groupBox_camera)
71-
self.pushButton_stop.setObjectName(u"pushButton_stop")
72-
self.pushButton_stop.setGeometry(QRect(190, 90, 93, 28))
73-
self.checkBox_autostop = QCheckBox(self.groupBox_camera)
74-
self.checkBox_autostop.setObjectName(u"checkBox_autostop")
75-
self.checkBox_autostop.setGeometry(QRect(90, 20, 101, 20))
76-
self.checkBox_syncdisplay = QCheckBox(self.groupBox_camera)
77-
self.checkBox_syncdisplay.setObjectName(u"checkBox_syncdisplay")
78-
self.checkBox_syncdisplay.setGeometry(QRect(210, 20, 121, 20))
62+
sizePolicy2.setHeightForWidth(self.listWidget.sizePolicy().hasHeightForWidth())
63+
self.listWidget.setSizePolicy(sizePolicy2)
7964

80-
self.gridLayout.addWidget(self.groupBox_camera, 0, 2, 1, 1)
65+
self.gridLayout.addWidget(self.listWidget, 0, 0, 6, 1)
8166

8267
self.groupBox_template = QGroupBox(self.centralwidget)
8368
self.groupBox_template.setObjectName(u"groupBox_template")
84-
sizePolicy2.setHeightForWidth(self.groupBox_template.sizePolicy().hasHeightForWidth())
85-
self.groupBox_template.setSizePolicy(sizePolicy2)
69+
sizePolicy3 = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
70+
sizePolicy3.setHorizontalStretch(0)
71+
sizePolicy3.setVerticalStretch(0)
72+
sizePolicy3.setHeightForWidth(self.groupBox_template.sizePolicy().hasHeightForWidth())
73+
self.groupBox_template.setSizePolicy(sizePolicy3)
8674
self.groupBox_template.setMinimumSize(QSize(450, 200))
8775
self.pushButton_template = QPushButton(self.groupBox_template)
8876
self.pushButton_template.setObjectName(u"pushButton_template")
@@ -94,35 +82,12 @@ def setupUi(self, MainWindow):
9482
self.pushButton_export_template.setObjectName(u"pushButton_export_template")
9583
self.pushButton_export_template.setGeometry(QRect(220, 20, 141, 28))
9684

97-
self.gridLayout.addWidget(self.groupBox_template, 1, 2, 1, 1)
98-
99-
self.listWidget = QListWidget(self.centralwidget)
100-
self.listWidget.setObjectName(u"listWidget")
101-
sizePolicy3 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding)
102-
sizePolicy3.setHorizontalStretch(0)
103-
sizePolicy3.setVerticalStretch(0)
104-
sizePolicy3.setHeightForWidth(self.listWidget.sizePolicy().hasHeightForWidth())
105-
self.listWidget.setSizePolicy(sizePolicy3)
106-
107-
self.gridLayout.addWidget(self.listWidget, 0, 0, 4, 1)
108-
109-
self.label = QLabel(self.centralwidget)
110-
self.label.setObjectName(u"label")
111-
sizePolicy4 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
112-
sizePolicy4.setHorizontalStretch(0)
113-
sizePolicy4.setVerticalStretch(0)
114-
sizePolicy4.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
115-
self.label.setSizePolicy(sizePolicy4)
116-
self.label.setMinimumSize(QSize(800, 800))
117-
self.label.setMaximumSize(QSize(16777215, 16777215))
118-
self.label.setMouseTracking(True)
119-
120-
self.gridLayout.addWidget(self.label, 0, 1, 4, 1)
85+
self.gridLayout.addWidget(self.groupBox_template, 3, 2, 1, 1)
12186

12287
self.groupBox_barcode = QGroupBox(self.centralwidget)
12388
self.groupBox_barcode.setObjectName(u"groupBox_barcode")
124-
sizePolicy2.setHeightForWidth(self.groupBox_barcode.sizePolicy().hasHeightForWidth())
125-
self.groupBox_barcode.setSizePolicy(sizePolicy2)
89+
sizePolicy3.setHeightForWidth(self.groupBox_barcode.sizePolicy().hasHeightForWidth())
90+
self.groupBox_barcode.setSizePolicy(sizePolicy3)
12691
self.groupBox_barcode.setMinimumSize(QSize(450, 220))
12792
self.groupBox_4 = QGroupBox(self.groupBox_barcode)
12893
self.groupBox_4.setObjectName(u"groupBox_4")
@@ -170,6 +135,7 @@ def setupUi(self, MainWindow):
170135
self.groupBox_5 = QGroupBox(self.groupBox_barcode)
171136
self.groupBox_5.setObjectName(u"groupBox_5")
172137
self.groupBox_5.setGeometry(QRect(9, 139, 431, 71))
138+
self.groupBox_5.setMinimumSize(QSize(150, 40))
173139
self.checkBox_qrcode = QCheckBox(self.groupBox_5)
174140
self.checkBox_qrcode.setObjectName(u"checkBox_qrcode")
175141
self.checkBox_qrcode.setGeometry(QRect(50, 10, 81, 20))
@@ -207,23 +173,79 @@ def setupUi(self, MainWindow):
207173
self.checkBox_gs1.setGeometry(QRect(50, 70, 121, 20))
208174
self.checkBox_gs1.setChecked(True)
209175

210-
self.gridLayout.addWidget(self.groupBox_barcode, 2, 2, 1, 1)
176+
self.gridLayout.addWidget(self.groupBox_barcode, 4, 2, 1, 1)
177+
178+
self.label = QLabel(self.centralwidget)
179+
self.label.setObjectName(u"label")
180+
sizePolicy4 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
181+
sizePolicy4.setHorizontalStretch(0)
182+
sizePolicy4.setVerticalStretch(0)
183+
sizePolicy4.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
184+
self.label.setSizePolicy(sizePolicy4)
185+
self.label.setMinimumSize(QSize(800, 800))
186+
self.label.setMaximumSize(QSize(4096, 4096))
187+
self.label.setMouseTracking(True)
188+
189+
self.gridLayout.addWidget(self.label, 0, 1, 6, 1)
211190

212191
self.textEdit_results = QTextEdit(self.centralwidget)
213192
self.textEdit_results.setObjectName(u"textEdit_results")
214-
sizePolicy5 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Expanding)
215-
sizePolicy5.setHorizontalStretch(0)
216-
sizePolicy5.setVerticalStretch(0)
217-
sizePolicy5.setHeightForWidth(self.textEdit_results.sizePolicy().hasHeightForWidth())
218-
self.textEdit_results.setSizePolicy(sizePolicy5)
193+
sizePolicy2.setHeightForWidth(self.textEdit_results.sizePolicy().hasHeightForWidth())
194+
self.textEdit_results.setSizePolicy(sizePolicy2)
219195
self.textEdit_results.setMinimumSize(QSize(450, 200))
220196

221-
self.gridLayout.addWidget(self.textEdit_results, 3, 2, 1, 1)
197+
self.gridLayout.addWidget(self.textEdit_results, 5, 2, 1, 1)
198+
199+
self.groupBox_camera = QGroupBox(self.centralwidget)
200+
self.groupBox_camera.setObjectName(u"groupBox_camera")
201+
sizePolicy3.setHeightForWidth(self.groupBox_camera.sizePolicy().hasHeightForWidth())
202+
self.groupBox_camera.setSizePolicy(sizePolicy3)
203+
self.groupBox_camera.setMinimumSize(QSize(450, 150))
204+
self.comboBox = QComboBox(self.groupBox_camera)
205+
self.comboBox.addItem("")
206+
self.comboBox.addItem("")
207+
self.comboBox.setObjectName(u"comboBox")
208+
self.comboBox.setGeometry(QRect(180, 50, 101, 31))
209+
self.label_2 = QLabel(self.groupBox_camera)
210+
self.label_2.setObjectName(u"label_2")
211+
self.label_2.setGeometry(QRect(90, 50, 131, 31))
212+
font = QFont()
213+
font.setPointSize(10)
214+
self.label_2.setFont(font)
215+
self.pushButton_open = QPushButton(self.groupBox_camera)
216+
self.pushButton_open.setObjectName(u"pushButton_open")
217+
self.pushButton_open.setGeometry(QRect(90, 90, 93, 28))
218+
self.pushButton_stop = QPushButton(self.groupBox_camera)
219+
self.pushButton_stop.setObjectName(u"pushButton_stop")
220+
self.pushButton_stop.setGeometry(QRect(190, 90, 93, 28))
221+
self.checkBox_autostop = QCheckBox(self.groupBox_camera)
222+
self.checkBox_autostop.setObjectName(u"checkBox_autostop")
223+
self.checkBox_autostop.setGeometry(QRect(90, 20, 101, 20))
224+
self.checkBox_syncdisplay = QCheckBox(self.groupBox_camera)
225+
self.checkBox_syncdisplay.setObjectName(u"checkBox_syncdisplay")
226+
self.checkBox_syncdisplay.setGeometry(QRect(210, 20, 121, 20))
227+
228+
self.gridLayout.addWidget(self.groupBox_camera, 1, 2, 1, 1)
229+
230+
self.groupBox_screen = QGroupBox(self.centralwidget)
231+
self.groupBox_screen.setObjectName(u"groupBox_screen")
232+
self.groupBox_screen.setEnabled(True)
233+
sizePolicy3.setHeightForWidth(self.groupBox_screen.sizePolicy().hasHeightForWidth())
234+
self.groupBox_screen.setSizePolicy(sizePolicy3)
235+
self.groupBox_screen.setMinimumSize(QSize(450, 50))
236+
self.pushButton_area = QPushButton(self.groupBox_screen)
237+
self.pushButton_area.setObjectName(u"pushButton_area")
238+
self.pushButton_area.setGeometry(QRect(90, 20, 75, 23))
239+
self.pushButton_full = QPushButton(self.groupBox_screen)
240+
self.pushButton_full.setObjectName(u"pushButton_full")
241+
self.pushButton_full.setGeometry(QRect(200, 20, 75, 23))
242+
243+
self.gridLayout.addWidget(self.groupBox_screen, 0, 2, 1, 1)
222244

223245
MainWindow.setCentralWidget(self.centralwidget)
224246
self.menubar = QMenuBar(MainWindow)
225247
self.menubar.setObjectName(u"menubar")
226-
self.menubar.setGeometry(QRect(0, 0, 1600, 26))
248+
self.menubar.setGeometry(QRect(0, 0, 1819, 21))
227249
self.menuAbout = QMenu(self.menubar)
228250
self.menuAbout.setObjectName(u"menuAbout")
229251
self.menuHelp = QMenu(self.menubar)
@@ -256,20 +278,10 @@ def retranslateUi(self, MainWindow):
256278
self.actionOpen_Folder.setText(QCoreApplication.translate("MainWindow", u"Open Folder...", None))
257279
self.actionExport_template.setText(QCoreApplication.translate("MainWindow", u"Save Template", None))
258280
self.actionEnter_License_Key.setText(QCoreApplication.translate("MainWindow", u"Enter License Key", None))
259-
self.groupBox_camera.setTitle(QCoreApplication.translate("MainWindow", u"Camera", None))
260-
self.comboBox.setItemText(0, QCoreApplication.translate("MainWindow", u"640 x 480", None))
261-
self.comboBox.setItemText(1, QCoreApplication.translate("MainWindow", u"320 x 240", None))
262-
263-
self.label_2.setText(QCoreApplication.translate("MainWindow", u"Resolution:", None))
264-
self.pushButton_open.setText(QCoreApplication.translate("MainWindow", u"Start", None))
265-
self.pushButton_stop.setText(QCoreApplication.translate("MainWindow", u"Stop", None))
266-
self.checkBox_autostop.setText(QCoreApplication.translate("MainWindow", u"Auto Stop", None))
267-
self.checkBox_syncdisplay.setText(QCoreApplication.translate("MainWindow", u"Sync Display", None))
268281
self.groupBox_template.setTitle(QCoreApplication.translate("MainWindow", u"Template", None))
269282
self.pushButton_template.setText(QCoreApplication.translate("MainWindow", u"Load Template File", None))
270283
self.textEdit_template.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Paste template string here", None))
271284
self.pushButton_export_template.setText(QCoreApplication.translate("MainWindow", u"Export Template File", None))
272-
self.label.setText("")
273285
self.groupBox_barcode.setTitle(QCoreApplication.translate("MainWindow", u"Barcode Types", None))
274286
self.groupBox_4.setTitle(QCoreApplication.translate("MainWindow", u"1D", None))
275287
self.checkBox_code39.setText(QCoreApplication.translate("MainWindow", u"Code 39", None))
@@ -292,7 +304,20 @@ def retranslateUi(self, MainWindow):
292304
self.checkBox_patchcode.setText(QCoreApplication.translate("MainWindow", u"Patch Code", None))
293305
self.checkBox_datamatrix.setText(QCoreApplication.translate("MainWindow", u"DataMatrix", None))
294306
self.checkBox_gs1.setText(QCoreApplication.translate("MainWindow", u"GS1 Composite", None))
307+
self.label.setText("")
295308
self.textEdit_results.setDocumentTitle("")
309+
self.groupBox_camera.setTitle(QCoreApplication.translate("MainWindow", u"Camera", None))
310+
self.comboBox.setItemText(0, QCoreApplication.translate("MainWindow", u"640 x 480", None))
311+
self.comboBox.setItemText(1, QCoreApplication.translate("MainWindow", u"320 x 240", None))
312+
313+
self.label_2.setText(QCoreApplication.translate("MainWindow", u"Resolution:", None))
314+
self.pushButton_open.setText(QCoreApplication.translate("MainWindow", u"Start", None))
315+
self.pushButton_stop.setText(QCoreApplication.translate("MainWindow", u"Stop", None))
316+
self.checkBox_autostop.setText(QCoreApplication.translate("MainWindow", u"Auto Stop", None))
317+
self.checkBox_syncdisplay.setText(QCoreApplication.translate("MainWindow", u"Sync Display", None))
318+
self.groupBox_screen.setTitle(QCoreApplication.translate("MainWindow", u"Screen", None))
319+
self.pushButton_area.setText(QCoreApplication.translate("MainWindow", u"Select Area", None))
320+
self.pushButton_full.setText(QCoreApplication.translate("MainWindow", u"Fullscreen", None))
296321
self.menuAbout.setTitle(QCoreApplication.translate("MainWindow", u"File", None))
297322
self.menuHelp.setTitle(QCoreApplication.translate("MainWindow", u"Help", None))
298323
# retranslateUi

0 commit comments

Comments
 (0)