亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PyQt5筆記之彈出窗口大全

 更新時(shí)間:2019年06月20日 20:50:37   作者:羅兵  
今天小編就為大家分享一篇PyQt5筆記之彈出窗口大全,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

本文實(shí)現(xiàn)了PyQt5個(gè)各種彈出窗口:輸入框、消息框、文件對(duì)話框、顏色對(duì)話框、字體對(duì)話框、自定義對(duì)話框

其中,為了實(shí)現(xiàn)自定義對(duì)話框的返回值,使用了信號(hào)/槽

本文基于 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)

    # 局部布局
    h1 = QHBoxLayout() # 輸入框
    h2 = QHBoxLayout() # 消息窗口
    h3 = QHBoxLayout() # 文件(夾)打開(kāi),保存
    h4 = QHBoxLayout() # 顏色、字體、自定義

    
    btn11 = QPushButton('輸入:整數(shù)')
    btn12 = QPushButton('輸入:小數(shù)')
    btn13 = QPushButton('輸入:文本')
    btn14 = QPushButton('輸入:多文')
    btn15 = QPushButton('輸入:選項(xiàng)')
    
    btn21 = QPushButton('消息:信息')
    btn22 = QPushButton('消息:?jiǎn)柎?)
    btn23 = QPushButton('消息:警告')
    btn24 = QPushButton('消息:危險(xiǎn)')
    btn25 = QPushButton('消息:關(guān)于')
    
    btn31 = QPushButton('文件:文件夾')
    btn32 = QPushButton('文件:?jiǎn)挝募?)
    btn33 = QPushButton('文件:多文件')
    btn34 = QPushButton('文件:保存')
    btn35 = QPushButton('文件:另存為')

    btn41 = QPushButton('顏色')
    btn42 = QPushButton('字體')
    btn43 = QPushButton('自定義')
    
    for btn in (btn11, btn12, btn13, btn14, btn15):
      h1.addWidget(btn)
      
    for btn in (btn21, btn22, btn23, btn24, btn25):
      h2.addWidget(btn)
      
    for btn in (btn31, btn32, btn33, btn34, btn35):
      h3.addWidget(btn)
      
    for btn in (btn41, btn42, btn43):
      h4.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(h1) 
    wl.addLayout(h2)
    wl.addLayout(h3)
    wl.addLayout(h4)
    
    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)不開(kāi)。", 
                  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_())

以上這篇PyQt5筆記之彈出窗口大全就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python日期時(shí)間對(duì)象轉(zhuǎn)換為字符串的實(shí)例

    Python日期時(shí)間對(duì)象轉(zhuǎn)換為字符串的實(shí)例

    今天小編就為大家分享一篇Python日期時(shí)間對(duì)象轉(zhuǎn)換為字符串的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 在主流系統(tǒng)之上安裝Pygame的方法

    在主流系統(tǒng)之上安裝Pygame的方法

    這篇文章主要介紹了在主流系統(tǒng)之上安裝Pygame的方法,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python實(shí)現(xiàn)TCP協(xié)議下的端口映射功能的腳本程序示例

    Python實(shí)現(xiàn)TCP協(xié)議下的端口映射功能的腳本程序示例

    端口映射一個(gè)最基本的運(yùn)作形態(tài)就是通過(guò)一個(gè)中間端口將一個(gè)端口發(fā)送的數(shù)據(jù)全部轉(zhuǎn)給另一個(gè)端口,well,這里我們就來(lái)看一下Python實(shí)現(xiàn)TCP協(xié)議下的端口映射功能的腳本程序示例
    2016-06-06
  • Python 可視化調(diào)色盤繪制

    Python 可視化調(diào)色盤繪制

    這篇文章主要介紹了Python 可視化調(diào)色盤繪制,文章首先通過(guò)導(dǎo)入模塊并加載圖片展開(kāi)全文介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-06-06
  • python寫(xiě)的ARP攻擊代碼實(shí)例

    python寫(xiě)的ARP攻擊代碼實(shí)例

    這篇文章主要介紹了python寫(xiě)的ARP攻擊代碼實(shí)例,需要的朋友可以參考下
    2014-06-06
  • Python中staticmethod和classmethod的作用與區(qū)別

    Python中staticmethod和classmethod的作用與區(qū)別

    今天小編就為大家分享一篇關(guān)于Python中staticmethod和classmethod的作用與區(qū)別,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • pytorch之torchvision.transforms圖像變換實(shí)例

    pytorch之torchvision.transforms圖像變換實(shí)例

    今天小編就為大家分享一篇pytorch之torchvision.transforms圖像變換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Python?selenium?get_cookies獲取cookie不全的解決方案

    Python?selenium?get_cookies獲取cookie不全的解決方案

    之前使用爬蟲(chóng)時(shí)最讓我頭疼的就是cookie失效的問(wèn)題了,下面這篇文章主要給大家介紹了關(guān)于Python?selenium?get_cookies獲取cookie不全的解決方案,需要的朋友可以參考下
    2022-10-10
  • Python爬取微信小程序Charles實(shí)現(xiàn)過(guò)程圖解

    Python爬取微信小程序Charles實(shí)現(xiàn)過(guò)程圖解

    這篇文章主要介紹了Python爬取微信小程序Charles實(shí)現(xiàn)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 小學(xué)生也能看懂的python語(yǔ)法之循環(huán)語(yǔ)句精解

    小學(xué)生也能看懂的python語(yǔ)法之循環(huán)語(yǔ)句精解

    這篇文章主要介紹了詳解Python中的條件,循環(huán)語(yǔ)句,包括while循環(huán)for循環(huán),循環(huán)語(yǔ)句是學(xué)習(xí)各個(gè)編程語(yǔ)言的最基本的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2021-09-09

最新評(píng)論