溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

pyqt5 之 信號(hào)+槽 測(cè)試用例

發(fā)布時(shí)間:2020-07-12 10:39:16 來(lái)源:網(wǎng)絡(luò) 閱讀:203 作者:余偉兵 欄目:編程語(yǔ)言


????在使用pycharm進(jìn)行編寫(xiě)代碼的時(shí)候,發(fā)現(xiàn)信號(hào)設(shè)置了connect一個(gè)槽,但是測(cè)試發(fā)現(xiàn)沒(méi)有起作用,另外,在pycharm編輯器上connect提示沒(méi)有這個(gè)函數(shù),總是找不到原因,后面決定還是對(duì)碰到相應(yīng)的知識(shí)點(diǎn)需要做對(duì)應(yīng)的測(cè)試用例進(jìn)行學(xué)習(xí)和驗(yàn)證。

????下面這個(gè)是對(duì)信號(hào)+槽的一個(gè)典型實(shí)例??梢哉0搭A(yù)期運(yùn)行,在pycharm中connect也顯示沒(méi)有這個(gè)函數(shù),應(yīng)該就是pycharm本身設(shè)置和提示的問(wèn)題,后面忽略它。所以有時(shí)候也不能鉆牛角尖,pycharm也僅僅是個(gè)編輯器而已。


#-*-?coding:utf-8?-*-
'''
Signal?&?Slot
'''
__author__?=?'Tony?Zhu'

import?sys
from?PyQt5.QtCore?import?Qt
from?PyQt5.QtWidgets?import?(QWidget,?QLCDNumber,?QSlider,QGridLayout,QLabel,QHBoxLayout,?QGroupBox,
????QVBoxLayout,?QApplication,QProgressBar,QPushButton,QMessageBox)


class?SignalSlot(QWidget):

????def?__init__(self):
????????super(SignalSlot,self).__init__()
????????self.initUI()


????def?initUI(self):

????????self.controlsGroup?=?QGroupBox("運(yùn)行樣本")
????????self.lcdNumber?=?QLCDNumber(self)
????????self.slider?=?QSlider(Qt.Horizontal,?self)
????????self.pBar?=?QProgressBar(self)
????????vbox?=?QVBoxLayout()
????????vbox.addWidget(self.pBar)
????????vbox.addWidget(self.lcdNumber)
????????vbox.addWidget(self.slider)
????????self.controlsGroup.setLayout(vbox)

????????controlsLayout?=?QGridLayout()
????????self.label1?=?QLabel("保存狀態(tài):")
????????self.saveLabel?=?QLabel()
????????self.label2?=?QLabel("運(yùn)行狀態(tài):")
????????self.runLabel?=?QLabel()
????????self.buttonSave?=?QPushButton("保存")
????????self.buttonRun?=?QPushButton("運(yùn)行")
????????self.buttonStop?=?QPushButton("停止")
????????self.buttonDisconnect?=?QPushButton("解除關(guān)聯(lián)")
????????self.buttonConnect?=?QPushButton("綁定關(guān)聯(lián)")

????????controlsLayout.addWidget(self.label1,0,0)
????????controlsLayout.addWidget(self.saveLabel,0,1)
????????controlsLayout.addWidget(self.label2,1,0)
????????controlsLayout.addWidget(self.runLabel,1,1)
????????controlsLayout.addWidget(self.buttonSave,2,0)
????????controlsLayout.addWidget(self.buttonRun,2,1)
????????controlsLayout.addWidget(self.buttonStop,2,2)
????????controlsLayout.addWidget(self.buttonDisconnect,3,0)
????????controlsLayout.addWidget(self.buttonConnect,3,1)

????????layout?=?QHBoxLayout()
????????layout.addWidget(self.controlsGroup)
????????layout.addLayout(controlsLayout)
????????self.setLayout(layout)

????????self.buttonRun.clicked.connect(self.buttonSave.clicked)
????????self.slider.valueChanged.connect(self.pBar.setValue)
????????self.slider.valueChanged.connect(self.lcdNumber.display)
????????self.buttonSave.clicked.connect(self.showMessage)
????????self.buttonRun.clicked.connect(self.showMessage)
????????self.buttonDisconnect.clicked.connect(self.unbindConnection)
????????self.buttonConnect.clicked.connect(self.bindConnection)
????????self.buttonStop.clicked.connect(self.stop)

????????self.setGeometry(300,?500,?500,?180)
????????self.setWindowTitle('信號(hào)和槽')

????def?showMessage(self):
????????if?self.sender().text()?==?"保存":
????????????self.saveLabel.setText("Saved")
????????elif?self.sender().text()?==?"運(yùn)行":
????????????self.saveLabel.setText("Saved")
????????????self.runLabel.setText("Running")

????def?unbindConnection(self):
????????self.slider.valueChanged.disconnect()
????def?bindConnection(self):
????????self.slider.valueChanged.connect(self.pBar.setValue)
????????self.slider.valueChanged.connect(self.lcdNumber.display)
????def?stop(self):
????????self.saveLabel.setText("")
????????self.runLabel.setText("")

if?__name__?==?'__main__':

????app?=?QApplication(sys.argv)
????ex?=?SignalSlot()
????ex.show()
????sys.exit(app.exec_())


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI