欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyQt5筆記之彈出窗口大全

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

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

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

本文基于 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() # 文件(夾)打開,保存
    h4 = QHBoxLayout() # 顏色、字體、自定義

    
    btn11 = QPushButton('輸入:整數(shù)')
    btn12 = QPushButton('輸入:小數(shù)')
    btn13 = QPushButton('輸入:文本')
    btn14 = QPushButton('輸入:多文')
    btn15 = QPushButton('輸入:選項')
    
    btn21 = QPushButton('消息:信息')
    btn22 = QPushButton('消息:問答')
    btn23 = QPushButton('消息:警告')
    btn24 = QPushButton('消息:危險')
    btn25 = QPushButton('消息:關于')
    
    btn31 = QPushButton('文件:文件夾')
    btn32 = QPushButton('文件:單文件')
    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) # 輸入:選項
    
    btn21.clicked.connect(self.do_btn21) # 消息:信息
    btn22.clicked.connect(self.do_btn22) # 消息:問答
    btn23.clicked.connect(self.do_btn23) # 消息:警告
    btn24.clicked.connect(self.do_btn24) # 消息:危險
    btn25.clicked.connect(self.do_btn25) # 消息:關于
    
    btn31.clicked.connect(self.do_btn31) # 文件:文件夾
    btn32.clicked.connect(self.do_btn32) # 文件:單文件
    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) # 接收自定義窗口關閉時發(fā)送過來的信號,交給 echo 函數(shù)顯示
    

  def echo(self, value):
    '''顯示對話框返回值'''
    QMessageBox.information(self, "返回值",  "得到:{}\n\ntype: {}".format(value, type(value)), QMessageBox.Yes | QMessageBox.No)
    #pass
    
  # =====================================================================
  def do_btn11(self, event): # 輸入:整數(shù)
    #后面四個數(shù)字的作用依次是 初始值 最小值 最大值 步幅 
    value, ok = QInputDialog.getInt(self, "輸入框標題", "這是提示信息\n\n請輸入整數(shù):", 37, -10000, 10000, 2)
    #self.echo(value)
    
  def do_btn12(self, event): # 輸入:小數(shù)
    #后面四個數(shù)字的作用依次是 初始值 最小值 最大值 小數(shù)點后位數(shù) 
    value, ok = QInputDialog.getDouble(self, "輸入框標題", "這是提示信息\n\n請輸入整數(shù):", 37.56, -10000, 10000, 2)
    self.echo(value)
    
  def do_btn13(self, event): # 輸入:文本
    #第三個參數(shù)表示顯示類型,可選,有正常(QLineEdit.Normal)、密碼( QLineEdit. Password)、不顯示( QLineEdit. NoEcho)三種情況
    value, ok = QInputDialog.getText(self, "輸入框標題", "這是提示信息\n\n請輸入文本:", QLineEdit.Normal, "這是默認值")
    self.echo(value)
    
  def do_btn14(self, event): # 輸入:多文
    value, ok = QInputDialog.getMultiLineText(self, "輸入框標題", "這是提示信息\n\n請輸入地址:", "默認的\n我的地址是\n中國廣東廣州番禺") 
    self.echo(value)
    
  def do_btn15(self, event): # 輸入:選項
    #1為默認選中選項目,True/False 列表框是否可編輯。 
    items = ["Spring", "Summer", "Fall", "Winter"] 
    value, ok = QInputDialog.getItem(self, "輸入框標題", "這是提示信息\n\n請選擇季節(jié):", items, 1, True) 
    self.echo(value)
    
  # =====================================================================
  def do_btn21(self, event): # 消息:信息
    reply = QMessageBox.information(self,
                  "消息框標題", 
                  "這是一條消息。", 
                  QMessageBox.Yes | QMessageBox.No)
    self.echo(reply)
    
  def do_btn22(self, event): # 消息:問答
    reply = QMessageBox.question(self,
                  "消息框標題", 
                  "這是一條問答嗎?", 
                  QMessageBox.Yes | QMessageBox.No)
    self.echo(reply)
    
  def do_btn23(self, event): # 消息:警告
    reply = QMessageBox.warning(self,
                  "消息框標題", 
                  "這是一條警告!", 
                  QMessageBox.Yes | QMessageBox.No)
    self.echo(reply)
    
  def do_btn24(self, event): # 消息:危險
    reply = QMessageBox.ctitical(self,
                  "消息框標題", 
                  "危險!程序即將強制退出!?。n\n這個按鈕再也點不開。", 
                  QMessageBox.Yes | QMessageBox.No)
    self.echo(reply)
    
  def do_btn25(self, event): # 消息:關于
    reply = QMessageBox.about(self,
                  "消息框標題", 
                  "這是關于軟件的說明。。。", 
                  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): # 文件:單文件
    file_, filetype = QFileDialog.getOpenFileName(self, 
                  "選取文件", 
                  "C:/", 
                  "All Files (*);;Text Files (*.txt)")  #設置文件擴展名過濾,注意用雙分號間隔
    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):
  '''自定義窗口'''
  # 知識點:
  # 1.為了得到返回值用到了自定義的信號/槽
  # 2.為了顯示動態(tài)數(shù)字,使用了計時器
  
  before_close_signal = pyqtSignal(int)    # 自定義信號(int類型)
  
  def __init__(self):
    super().__init__()
    
    self.sec = 0
    self.setWindowTitle('自定義窗口')
    self.resize(200,150)

    self.lcd = QLCDNumber(18, self)
    btn1 = QPushButton(self, text="測試")
    btn2 = QPushButton(self, text="關閉")

    layout = QVBoxLayout(self)
    layout.addWidget(self.lcd)
    layout.addWidget(btn1)
    layout.addWidget(btn2)
    
    self.timer = QTimer() 

    self.timer.timeout.connect(self.update) # 每次計時結束,觸發(fā)update
    btn1.clicked.connect(self.startTimer) 
    btn2.clicked.connect(self.stopTimer)  # 去到關閉前的處理
  
  def update(self):  
    self.sec += 1 
    self.lcd.display(self.sec)       # LED顯示數(shù)字+1 
   
  def startTimer(self): 
    self.timer.start(1000)         # 計時器每秒計數(shù) 

  def stopTimer(self):
    self.timer.stop()  
    self.sec = 0 
    self.before_close_signal.emit(self.lcd.value()) # 發(fā)送信號,帶參數(shù) 888
    self.close()              # 然后窗口關閉

  # 默認關閉事件 
  def closeEvent(self, e):
    self.stopTimer()

if __name__=="__main__":
  import sys
  
  app = QApplication(sys.argv)
  win = MyWindow()
  win.show()
  sys.exit(app.exec_())

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

相關文章

  • Python日期時間對象轉換為字符串的實例

    Python日期時間對象轉換為字符串的實例

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

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

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

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

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

    Python 可視化調色盤繪制

    這篇文章主要介紹了Python 可視化調色盤繪制,文章首先通過導入模塊并加載圖片展開全文介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-06-06
  • python寫的ARP攻擊代碼實例

    python寫的ARP攻擊代碼實例

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

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

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

    pytorch之torchvision.transforms圖像變換實例

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

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

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

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

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

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

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

最新評論