這篇文章主要介紹了PyQt5之如何實(shí)現(xiàn)彈出窗口,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)公司專注于甘谷企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),成都商城網(wǎng)站開發(fā)。甘谷網(wǎng)站建設(shè)公司,為甘谷等地區(qū)提供建站服務(wù)。全流程按需求定制開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)本文基于 windows 7 + python 3.4
效果圖:
取得彈出窗口的返回值
全部代碼:
from PyQt5.QtWidgets import * from PyQt5.QtCore import Qt, pyqtSignal, QTimer class MyWindow(QWidget): def __init__(self): super().__init__() self.setWindowTitle('PyQt5 彈出窗口(框)大全') self.resize(400, 300) # 全局布局(注意參數(shù) self) wl = QVBoxLayout(self) # 局部布局 h2 = QHBoxLayout() # 輸入框 h3 = QHBoxLayout() # 消息窗口 h4 = QHBoxLayout() # 文件(夾)打開,保存 h5 = QHBoxLayout() # 顏色、字體、自定義 btn11 = QPushButton('輸入:整數(shù)') btn12 = QPushButton('輸入:小數(shù)') btn13 = QPushButton('輸入:文本') btn14 = QPushButton('輸入:多文') btn15 = QPushButton('輸入:選項(xiàng)') btn21 = QPushButton('消息:信息') btn22 = QPushButton('消息:?jiǎn)柎?#39;) btn23 = QPushButton('消息:警告') btn24 = QPushButton('消息:危險(xiǎn)') btn25 = QPushButton('消息:關(guān)于') btn31 = QPushButton('文件:文件夾') btn32 = QPushButton('文件:?jiǎn)挝募?#39;) btn33 = QPushButton('文件:多文件') btn34 = QPushButton('文件:保存') btn35 = QPushButton('文件:另存為') btn41 = QPushButton('顏色') btn42 = QPushButton('字體') btn43 = QPushButton('自定義') for btn in (btn11, btn12, btn13, btn14, btn15): h2.addWidget(btn) for btn in (btn21, btn22, btn23, btn24, btn25): h3.addWidget(btn) for btn in (btn31, btn32, btn33, btn34, btn35): h4.addWidget(btn) for btn in (btn41, btn42, btn43): h5.addWidget(btn) btn11.clicked.connect(self.do_btn11) # 輸入:整數(shù) btn12.clicked.connect(self.do_btn12) # 輸入:小數(shù) btn13.clicked.connect(self.do_btn13) # 輸入:文本 btn14.clicked.connect(self.do_btn14) # 輸入:多文 btn15.clicked.connect(self.do_btn15) # 輸入:選項(xiàng) btn21.clicked.connect(self.do_btn21) # 消息:信息 btn22.clicked.connect(self.do_btn22) # 消息:?jiǎn)柎? btn23.clicked.connect(self.do_btn23) # 消息:警告 btn24.clicked.connect(self.do_btn24) # 消息:危險(xiǎn) btn25.clicked.connect(self.do_btn25) # 消息:關(guān)于 btn31.clicked.connect(self.do_btn31) # 文件:文件夾 btn32.clicked.connect(self.do_btn32) # 文件:?jiǎn)挝募? btn33.clicked.connect(self.do_btn33) # 文件:多文件 btn34.clicked.connect(self.do_btn34) # 文件:保存 btn35.clicked.connect(self.do_btn35) # 文件:另存為 btn41.clicked.connect(self.do_btn41) # 顏色 btn42.clicked.connect(self.do_btn42) # 字體 btn43.clicked.connect(self.do_btn43) # 自定義 # 加到全局布局 wl.addLayout(h2) wl.addLayout(h3) wl.addLayout(h4) wl.addLayout(h5) self.window2 = MyWindow2() # 自定義窗口 self.window2.before_close_signal.connect(self.echo) # 接收自定義窗口關(guān)閉時(shí)發(fā)送過(guò)來(lái)的信號(hào),交給 echo 函數(shù)顯示 def echo(self, value): '''顯示對(duì)話框返回值''' QMessageBox.information(self, "返回值", "得到:{}\n\ntype: {}".format(value, type(value)), QMessageBox.Yes | QMessageBox.No) #pass # ===================================================================== def do_btn11(self, event): # 輸入:整數(shù) #后面四個(gè)數(shù)字的作用依次是 初始值 最小值 大值 步幅 value, ok = QInputDialog.getInt(self, "輸入框標(biāo)題", "這是提示信息\n\n請(qǐng)輸入整數(shù):", 37, -10000, 10000, 2) #self.echo(value) def do_btn12(self, event): # 輸入:小數(shù) #后面四個(gè)數(shù)字的作用依次是 初始值 最小值 大值 小數(shù)點(diǎn)后位數(shù) value, ok = QInputDialog.getDouble(self, "輸入框標(biāo)題", "這是提示信息\n\n請(qǐng)輸入整數(shù):", 37.56, -10000, 10000, 2) self.echo(value) def do_btn13(self, event): # 輸入:文本 #第三個(gè)參數(shù)表示顯示類型,可選,有正常(QLineEdit.Normal)、密碼( QLineEdit. Password)、不顯示( QLineEdit. NoEcho)三種情況 value, ok = QInputDialog.getText(self, "輸入框標(biāo)題", "這是提示信息\n\n請(qǐng)輸入文本:", QLineEdit.Normal, "這是默認(rèn)值") self.echo(value) def do_btn14(self, event): # 輸入:多文 value, ok = QInputDialog.getMultiLineText(self, "輸入框標(biāo)題", "這是提示信息\n\n請(qǐng)輸入地址:", "默認(rèn)的\n我的地址是\n中國(guó)廣東廣州番禺") self.echo(value) def do_btn15(self, event): # 輸入:選項(xiàng) #1為默認(rèn)選中選項(xiàng)目,True/False 列表框是否可編輯。 items = ["Spring", "Summer", "Fall", "Winter"] value, ok = QInputDialog.getItem(self, "輸入框標(biāo)題", "這是提示信息\n\n請(qǐng)選擇季節(jié):", items, 1, True) self.echo(value) # ===================================================================== def do_btn21(self, event): # 消息:信息 reply = QMessageBox.information(self, "消息框標(biāo)題", "這是一條消息。", QMessageBox.Yes | QMessageBox.No) self.echo(reply) def do_btn22(self, event): # 消息:?jiǎn)柎? reply = QMessageBox.question(self, "消息框標(biāo)題", "這是一條問(wèn)答嗎?", QMessageBox.Yes | QMessageBox.No) self.echo(reply) def do_btn23(self, event): # 消息:警告 reply = QMessageBox.warning(self, "消息框標(biāo)題", "這是一條警告!", QMessageBox.Yes | QMessageBox.No) self.echo(reply) def do_btn24(self, event): # 消息:危險(xiǎn) reply = QMessageBox.ctitical(self, "消息框標(biāo)題", "危險(xiǎn)!程序即將強(qiáng)制退出?。。n\n這個(gè)按鈕再也點(diǎn)不開。", QMessageBox.Yes | QMessageBox.No) self.echo(reply) def do_btn25(self, event): # 消息:關(guān)于 reply = QMessageBox.about(self, "消息框標(biāo)題", "這是關(guān)于軟件的說(shuō)明。。。", QMessageBox.Yes | QMessageBox.No) self.echo(reply) # ===================================================================== def do_btn31(self, event): # 文件:文件夾 dir = QFileDialog.getExistingDirectory(self, "選取文件夾", "C:/") # 起始路徑 self.echo(dir) def do_btn32(self, event): # 文件:?jiǎn)挝募? file_, filetype = QFileDialog.getOpenFileName(self, "選取文件", "C:/", "All Files (*);;Text Files (*.txt)") #設(shè)置文件擴(kuò)展名過(guò)濾,注意用雙分號(hào)間隔 self.echo(file_) def do_btn33(self, event): # 文件:多文件 files, ok = QFileDialog.getOpenFileNames(self, "多文件選擇", "C:/", "All Files (*);;Text Files (*.txt)") self.echo(files) def do_btn34(self, event): # 文件:保存 file_, ok = QFileDialog.getSaveFileName(self, "文件保存", "C:/", "All Files (*);;Text Files (*.txt)") self.echo(file_) def do_btn35(self, event): # 文件:另存為 file_, ok = QFileDialog.getSaveFileName(self, "文件另存為", "C:/", "All Files (*);;Text Files (*.txt)") self.echo(file_) # ===================================================================== def do_btn41(self, event): # 顏色 color = QColorDialog.getColor(Qt.blue, self, "Select Color") self.echo(color) def do_btn42(self, event): # 字體 font, ok = QFontDialog.getFont() self.echo(font) def do_btn43(self, event): # 自定義 self.window2.show() class MyWindow2(QWidget): '''自定義窗口''' # 知識(shí)點(diǎn): # 1.為了得到返回值用到了自定義的信號(hào)/槽 # 2.為了顯示動(dòng)態(tài)數(shù)字,使用了計(jì)時(shí)器 before_close_signal = pyqtSignal(int) # 自定義信號(hào)(int類型) def __init__(self): super().__init__() self.sec = 0 self.setWindowTitle('自定義窗口') self.resize(200,150) self.lcd = QLCDNumber(18, self) btn1 = QPushButton(self, text="測(cè)試") btn2 = QPushButton(self, text="關(guān)閉") layout = QVBoxLayout(self) layout.addWidget(self.lcd) layout.addWidget(btn1) layout.addWidget(btn2) self.timer = QTimer() self.timer.timeout.connect(self.update) # 每次計(jì)時(shí)結(jié)束,觸發(fā)update btn1.clicked.connect(self.startTimer) btn2.clicked.connect(self.stopTimer) # 去到關(guān)閉前的處理 def update(self): self.sec += 1 self.lcd.display(self.sec) # LED顯示數(shù)字+1 def startTimer(self): self.timer.start(1000) # 計(jì)時(shí)器每秒計(jì)數(shù) def stopTimer(self): self.timer.stop() self.sec = 0 self.before_close_signal.emit(self.lcd.value()) # 發(fā)送信號(hào),帶參數(shù) 888 self.close() # 然后窗口關(guān)閉 # 默認(rèn)關(guān)閉事件 def closeEvent(self, e): self.stopTimer() if __name__=="__main__": import sys app = QApplication(sys.argv) win = MyWindow() win.show() sys.exit(app.exec_())
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“PyQt5之如何實(shí)現(xiàn)彈出窗口”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司,關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前題目:PyQt5之如何實(shí)現(xiàn)彈出窗口-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://aaarwkj.com/article10/jscdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、自適應(yīng)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站制作、軟件開發(fā)、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容