您好,登錄后才能下訂單哦!
????在使用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_())
免責(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)容。