微信公眾號:OpenCV開發者聯盟
關注獲取更多計算機視覺與深度學習知識
引言
QSpinBox調節組件

spinbox = QSpinBox()spinbox = QDoubleSpinBox()spinbox.setRange(min, max)spinbox..setSingleStep(0.01)spinbox.setSingleStep(n)spinbox.setDecimals(prec)QComboBox選擇組件
combox = QComboBox()combox.addItem(”選擇一”)代碼演示



1import?cv2?as?cv
2from?PyQt5?import?QtWidgets,?QtCore,?QtGui
3import?sys
4
5
6class?SpinBoxComBoxDemoPanel(QtWidgets.QWidget):
7????def?__init__(self,?parent=None):
8????????super().__init__(parent)
9????????#?文本標簽
10????????self.combox?=?QtWidgets.QComboBox()
11????????self.combox.addItem("原圖")
12????????self.combox.addItem("模糊")
13????????self.combox.addItem("灰度")
14????????self.combox.setCurrentIndex(0)
15
16????????hbox_layout1?=?QtWidgets.QHBoxLayout()
17????????hbox_layout1.addWidget(QtWidgets.QLabel("選擇:"))
18????????hbox_layout1.addWidget(self.combox)
19????????hbox_layout1.addStretch(1)
20
21????????panel1?=?QtWidgets.QGroupBox("單選演示")
22????????panel1.setLayout(hbox_layout1)
23
24????????self.spinbox1?=?QtWidgets.QSpinBox()
25????????self.spinbox1.setRange(0,?100)
26????????self.spinbox1.setSingleStep(1)
27????????self.spinbox2?=?QtWidgets.QSpinBox()
28????????self.spinbox2.setRange(3,?50)
29????????self.spinbox2.setSingleStep(2)
30
31????????hbox_layout2?=?QtWidgets.QHBoxLayout()
32????????hbox_layout2.addWidget(QtWidgets.QLabel("窗口:"))
33????????hbox_layout2.addWidget(self.spinbox1)
34????????hbox_layout2.addWidget(QtWidgets.QLabel("方差:"))
35????????hbox_layout2.addWidget(self.spinbox2)
36????????hbox_layout2.addStretch(1)
37
38????????panel2?=?QtWidgets.QGroupBox("高斯模糊參數")
39????????panel2.setLayout(hbox_layout2)
40
41????????panel3?=?QtWidgets.QWidget()
42????????hbox_layout3?=?QtWidgets.QHBoxLayout()
43????????hbox_layout3.addWidget(panel1)
44????????hbox_layout3.addWidget(panel2)
45????????panel3.setLayout(hbox_layout3)
46
47????????#?輸入文本框
48????????self.label?=?QtWidgets.QLabel()
49????????pixmap?=?QtGui.QPixmap("images/16.jpg")
50????????pix?=?pixmap.scaled(QtCore.QSize(620,?500),?QtCore.Qt.KeepAspectRatio)
51????????self.label.setPixmap(pix)
52????????self.label.setAlignment(QtCore.Qt.AlignCenter)
53????????self.label.setStyleSheet("background-color:black;?color:?green")
54
55????????#?添加到布局管理器中
56????????vbox_layout?=?QtWidgets.QVBoxLayout()
57????????vbox_layout.addWidget(panel3)
58????????vbox_layout.addWidget(self.label)
59????????vbox_layout.addStretch(1)
60
61????????self.spinbox1.setEnabled(False)
62????????self.spinbox2.setEnabled(False)
63
64????????#?面板容器
65????????self.setLayout(vbox_layout)
66
67????????#?setup?listener
68????????self.combox.currentIndexChanged.connect(self.on_select_changed)
69????????self.spinbox2.valueChanged.connect(self.on_update_blur)
70
71????def?on_select_changed(self):
72????????index?=?self.combox.currentIndex()
73????????self.spinbox1.setEnabled(False)
74????????self.spinbox2.setEnabled(False)
75????????if?index?==?0:
76????????????self.on_update_original()
77????????if?index?==?1:
78????????????self.spinbox1.setEnabled(True)
79????????????self.spinbox2.setEnabled(True)
80????????????self.on_update_blur()
81????????if?index?==?2:
82????????????self.on_update_gray()
83
84????def?on_update_original(self):
85????????pixmap?=?QtGui.QPixmap("images/16.jpg")
86????????pix?=?pixmap.scaled(QtCore.QSize(620,?500),?QtCore.Qt.KeepAspectRatio)
87????????self.label.setPixmap(pix)
88
89????def?on_update_blur(self):
90????????image?=?cv.imread("images/16.jpg")
91????????sigma?=?self.spinbox2.value()
92????????win_size?=?self.spinbox1.value()
93????????bgr?=?cv.GaussianBlur(image,?(win_size,?win_size),?sigma)
94????????dst?=?cv.cvtColor(bgr,?cv.COLOR_BGR2RGB)
95????????height,?width,?channel?=?dst.shape
96????????bytesPerLine?=?3?*?width
97????????img?=?QtGui.QImage(dst.data,?width,?height,?bytesPerLine,?QtGui.QImage.Format_RGB888)
98????????pixmap?=?QtGui.QPixmap(img)
99????????pix?=?pixmap.scaled(QtCore.QSize(620,?500),?QtCore.Qt.KeepAspectRatio)
100????????self.label.setPixmap(pix)
101
102????def?on_update_gray(self):
103????????image?=?cv.imread("images/16.jpg")
104????????gray?=?cv.cvtColor(image,?cv.COLOR_BGR2GRAY)
105????????dst?=?cv.cvtColor(gray,?cv.COLOR_GRAY2RGB)
106????????height,?width,?channel?=?dst.shape
107????????bytesPerLine?=?3?*?width
108????????img?=?QtGui.QImage(dst.data,?width,?height,?bytesPerLine,?QtGui.QImage.Format_RGB888)
109????????pixmap?=?QtGui.QPixmap(img)
110????????pix?=?pixmap.scaled(QtCore.QSize(620,?500),?QtCore.Qt.KeepAspectRatio)
111????????self.label.setPixmap(pix)?總結
本文主要是演示了PyQT5的QSpinBox與QComboBox兩種控件使用,從創建、Group方式排版布局,事件響應處理等等細節全面介紹了它們的使用。
掃碼關注
OpenCV開發者聯盟,
專注各種語言的OpenCV開發教程分享
OpenCV周邊開發技術應用!

掃碼查看OpenCV+OpenVIO+Pytorch系統化學習路線圖

?推薦閱讀?
CV全棧開發者說 - 從傳統算法到深度學習怎么修煉
2022入坑深度學習,我選擇Pytorch框架!
Pytorch輕松實現經典視覺任務
教程推薦 | Pytorch框架CV開發-從入門到實戰
OpenCV4 C++學習 必備基礎語法知識三
OpenCV4 C++學習 必備基礎語法知識二
OpenCV4.5.4 人臉檢測+五點landmark新功能測試
OpenCV4.5.4人臉識別詳解與代碼演示
OpenCV二值圖象分析之Blob分析找圓
OpenCV4.5.x DNN + YOLOv5 C++推理
OpenCV4.5.4 直接支持YOLOv5 6.1版本模型推理
OpenVINO2021.4+YOLOX目標檢測模型部署測試
比YOLOv5還厲害的YOLOX來了,官方支持OpenVINO推理