最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyQt5基本控件使用之消息彈出、用戶輸入、文件對(duì)話框的使用方法

 更新時(shí)間:2019年08月06日 09:14:47   作者:BengDou_Do&Think  
本文主要介紹PyQt界面實(shí)現(xiàn)中常用的消息彈出對(duì)話框、提供用戶輸入的輸入框、打開(kāi)文件獲取文件/目錄路徑的文件對(duì)話框。 本文主要針對(duì)這三種控件的主要場(chǎng)景進(jìn)行介紹。感興趣的朋友跟隨小編一起看看吧

本文主要介紹PyQt界面實(shí)現(xiàn)中常用的消息彈出對(duì)話框、提供用戶輸入的輸入框、打開(kāi)文件獲取文件/目錄路徑的文件對(duì)話框。學(xué)習(xí)這三種控件前,先想一下它們使用的主要場(chǎng)景:

  1、消息彈出對(duì)話框。程序遇到問(wèn)題需要退出需要彈出錯(cuò)誤提示框 、程序執(zhí)行可能造成的風(fēng)險(xiǎn)需要彈出警告窗口提示用戶是否進(jìn)一步執(zhí)行等等。

  2、用戶輸入框。比如常見(jiàn)的讓用戶選擇執(zhí)行的程序分支、yes/no等等。

  3、文件對(duì)話框。獲取本地文件或者文件夾的完整路徑甚至是直接打開(kāi)文件顯示文件內(nèi)容。

  本文主要針對(duì)這三種控件的主要場(chǎng)景進(jìn)行介紹。

QMessageBox:彈出對(duì)話框控件

  QMessageBox是一種通用的彈出式對(duì)話框,用于顯示消息,允許用戶通過(guò)單擊不同的標(biāo)準(zhǔn)按鈕對(duì)消息進(jìn)行反饋。彈出式對(duì)話框有很多類型,如提示、警告、錯(cuò)誤、詢問(wèn)、關(guān)于等對(duì)話框。這些不同類型的QMessageBox對(duì)話框只是顯示時(shí)圖標(biāo)不同,其他功能一樣。

  QMessageBox類中常用方法

    information(QWdiget parent,title,text,buttons,defaultButton):彈出消息對(duì)話框。

    question(QWidget parent,title,text,buttons,defaultButton):彈出問(wèn)答對(duì)話框

    warning(QWidget parent,title,text,buttons,defaultButton):彈出警告對(duì)話框

    critical(QWidget parent,title,text,buttons,defaultButton):彈出嚴(yán)重錯(cuò)誤對(duì)話框

    about(QWidget parent,title,text):彈出關(guān)于對(duì)話

  參數(shù)解釋如下:

    parent:指定的父窗口控件。

    title:表示對(duì)話框標(biāo)題。

    text:表示對(duì)話框文本。

    buttons:表示多個(gè)標(biāo)準(zhǔn)按鈕,默認(rèn)為ok按鈕。

    defaultButton表示默認(rèn)選中的標(biāo)準(zhǔn)按鈕,默認(rèn)選中第一個(gè)標(biāo)準(zhǔn)按鈕。

  其他方法如下:

    setTitle():設(shè)置標(biāo)題

    setText():設(shè)置正文消息

    setIcon():設(shè)置彈出對(duì)話框的圖片

  QMessageBox的標(biāo)準(zhǔn)按鈕類型

    QMessage.Ok 同意操作、QMessage.Cancel  取消操作、QMessage.Yes  同意操作、QMessage.No  取消操作、QMessage.Abort  終止操作、QMessage.Retry 重試操作、QMessage.Ignore  忽略操作

  5種常用的消息對(duì)話框及其顯示效果

  (1)消息對(duì)話框,用來(lái)告訴用戶關(guān)于提示信息

    QMessageBox.information(self, '信息提示對(duì)話框','前方右拐到達(dá)目的地',QMessageBox.Yes | QMessageBox.No)

  (2)提問(wèn)對(duì)話框,用來(lái)告訴用戶關(guān)于提問(wèn)消息。

  QMessageBox.question(self, "提問(wèn)對(duì)話框", "你要繼續(xù)搞測(cè)試嗎?", QMessageBox.Yes | QMessageBox.No)

 

(3)警告對(duì)話框,用來(lái)告訴用戶關(guān)于不尋常的錯(cuò)誤消息。

  QMessageBox.warning(self, "警告對(duì)話框", "繼續(xù)執(zhí)行會(huì)導(dǎo)致系統(tǒng)重啟,你確定要繼續(xù)?", QMessageBox.Yes | QMessageBox.No)

 

(4)嚴(yán)重錯(cuò)誤對(duì)話框,用來(lái)告訴用戶關(guān)于嚴(yán)重的錯(cuò)誤消息。

  QMessageBox.critical(self, "嚴(yán)重錯(cuò)誤對(duì)話框", "數(shù)組越界,程序異常退出", QMessageBox.Yes | QMessageBox.No)

 (5)關(guān)于對(duì)話框

  QMessageBox.about(self, "關(guān)于對(duì)話框", "你的Windows系統(tǒng)是DOS1.0")

上述程序完整代碼如下:

# -*- coding: utf-8 -*-
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
class Ui_Form(object):
  def setupUi(self, Form):
    Form.setObjectName("Form")
    Form.resize(431, 166)
    self.pushButton = QtWidgets.QPushButton(Form)
    self.pushButton.setGeometry(QtCore.QRect(160, 50, 91, 41))
    font = QtGui.QFont()
    font.setFamily("YaHei Consolas Hybrid")
    font.setPointSize(10)
    self.pushButton.setFont(font)
    self.pushButton.setObjectName("pushButton")
    self.retranslateUi(Form)
    QtCore.QMetaObject.connectSlotsByName(Form)
  def retranslateUi(self, Form):
    _translate = QtCore.QCoreApplication.translate
    Form.setWindowTitle(_translate("Form", "對(duì)話框"))
    self.pushButton.setText(_translate("Form", "彈出對(duì)話框"))
class MyMainForm(QMainWindow, Ui_Form):
  def __init__(self, parent=None):
    super(MyMainForm, self).__init__(parent)
    self.setupUi(self)
    self.pushButton.clicked.connect(self.showMsg)
  def showMsg(self):
    QMessageBox.information(self, '信息提示對(duì)話框','前方右拐到達(dá)目的地',QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)
    QMessageBox.question(self, "提問(wèn)對(duì)話框", "你要繼續(xù)搞測(cè)試嗎?", QMessageBox.Yes | QMessageBox.No)
    QMessageBox.warning(self, "警告對(duì)話框", "繼續(xù)執(zhí)行會(huì)導(dǎo)致系統(tǒng)重啟,你確定要繼續(xù)?", QMessageBox.Yes | QMessageBox.No)
    QMessageBox.critical(self, "嚴(yán)重錯(cuò)誤對(duì)話框", "數(shù)組越界,程序異常退出", QMessageBox.Yes | QMessageBox.No,)
    QMessageBox.about(self, "關(guān)于對(duì)話框", "你的Windows系統(tǒng)是DOS1.0")
if __name__ == "__main__":
  app = QApplication(sys.argv)
  myWin = MyMainForm()
  myWin.show()
  sys.exit(app.exec_())

QInputDialog標(biāo)準(zhǔn)對(duì)話框控件

  QInputDialog控件是一個(gè)標(biāo)準(zhǔn)對(duì)話框,用于獲取用戶輸入信息,QInputDialog控件可以提供數(shù)字、字符串輸入或提供下拉列表選擇。

  針對(duì)QInputDialog對(duì)話框控件的使用,我們主要考慮2個(gè)問(wèn)題:1、如何在彈出對(duì)話框供用戶輸入,2、如何獲取用戶輸入。

  QInputDialog常用方法:

    getint():從控件中獲得標(biāo)準(zhǔn)整數(shù)輸入

    getDouble():從控件中獲得標(biāo)準(zhǔn)浮點(diǎn)數(shù)輸入

    getText():從控件中獲得標(biāo)準(zhǔn)字符串的輸入

    getItem() :從控件中獲得列表里的選項(xiàng)輸入

  說(shuō)明:QInputDialog控件

完整代碼如下:

# -*- coding: utf-8 -*-
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox,QInputDialog
class Ui_Form(object):
  def setupUi(self, Form):
    Form.setObjectName("Form")
    Form.resize(382, 190)
    font = QtGui.QFont()
    font.setPointSize(9)
    font.setBold(False)
    font.setWeight(50)
    Form.setFont(font)
    self.GetIntlineEdit = QtWidgets.QLineEdit(Form)
    self.GetIntlineEdit.setGeometry(QtCore.QRect(150, 30, 150, 31))
    self.GetIntlineEdit.setText("")
    self.GetIntlineEdit.setObjectName("GetIntlineEdit")
    self.GetstrlineEdit = QtWidgets.QLineEdit(Form)
    self.GetstrlineEdit.setGeometry(QtCore.QRect(150, 80, 150, 31))
    self.GetstrlineEdit.setObjectName("GetstrlineEdit")
    self.GetItemlineEdit = QtWidgets.QLineEdit(Form)
    self.GetItemlineEdit.setGeometry(QtCore.QRect(150, 130, 150, 31))
    self.GetItemlineEdit.setObjectName("GetItemlineEdit")
    self.getIntButton = QtWidgets.QPushButton(Form)
    self.getIntButton.setGeometry(QtCore.QRect(50, 30, 80, 31))
    self.getIntButton.setObjectName("getIntButton")
    self.getStrButton = QtWidgets.QPushButton(Form)
    self.getStrButton.setGeometry(QtCore.QRect(50, 80, 80, 31))
    self.getStrButton.setObjectName("getStrButton")
    self.getItemButton = QtWidgets.QPushButton(Form)
    self.getItemButton.setGeometry(QtCore.QRect(50, 130, 80, 31))
    self.getItemButton.setObjectName("getItemButton")
    self.retranslateUi(Form)
    QtCore.QMetaObject.connectSlotsByName(Form)
  def retranslateUi(self, Form):
    _translate = QtCore.QCoreApplication.translate
    Form.setWindowTitle(_translate("Form", "QInputDialog例子"))
    self.getIntButton.setText(_translate("Form", "獲取整數(shù)"))
    self.getStrButton.setText(_translate("Form", "獲取字符串"))
    self.getItemButton.setText(_translate("Form", "獲取列表選項(xiàng)"))
class MyMainForm(QMainWindow, Ui_Form):
  def __init__(self, parent=None):
    super(MyMainForm, self).__init__(parent)
    self.setupUi(self)
    self.getIntButton.clicked.connect(self.getInt)
    self.getStrButton.clicked.connect(self.getStr)
    self.getItemButton.clicked.connect(self.getItem)
  def getInt(self):
    num, ok = QInputDialog.getInt(self, 'Integer input dialog', '輸入數(shù)字')
    if ok and num:
      self.GetIntlineEdit.setText(str(num))
  def getStr(self):
    text, ok=QInputDialog.getText(self, 'Text Input Dialog', '輸入姓名:')
    if ok and text:
      self.GetstrlineEdit.setText(str(text))
  def getItem(self):
    items=('C', 'C++', 'C#', 'JAva', 'Python')
    item, ok=QInputDialog.getItem(self, "select input dialog", '語(yǔ)言列表', items, 0, False)
    if ok and item:
      self.GetItemlineEdit.setText(str(item))
if __name__ == "__main__":
  app = QApplication(sys.argv)
  myWin = MyMainForm()
  myWin.show()
  sys.exit(app.exec_())

關(guān)鍵代碼介紹:

  QInputDialog.getInt(self, 'Integer input dialog', '輸入數(shù)字') -> 輸入整數(shù)對(duì)話框

  QInputDialog.getText(self, 'Text Input Dialog', '輸入姓名:') -> 輸入字符串對(duì)話框

  QInputDialog.getItem(self, "select input dialog", '語(yǔ)言列表', items, 0, False) -> 下拉列表選擇對(duì)話框

QFileDialog文件對(duì)話框

  QFileDialog是用于打開(kāi)和保存文件的標(biāo)準(zhǔn)對(duì)話框。使用QFileDialog控件主要考慮2個(gè)場(chǎng)景:使用該控件提供用戶選擇目錄或文件,并保存選擇目錄或文件的路徑。簡(jiǎn)單說(shuō)就是實(shí)現(xiàn)類似word/Notepad++文件打開(kāi)功能。如下

   針對(duì)上述場(chǎng)景,QFileDialog控件實(shí)現(xiàn)的主要方法:

    QFileDialog.getOpenFileName():獲取單個(gè)文件路徑

    QFileDialog.getOpenFileNames():獲取多個(gè)文件路徑

    QFileDialog.getExistingDirectory():獲取文件夾路徑

完整代碼如下:

# -*- coding: utf-8 -*-
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox,QInputDialog,QFileDialog
class Ui_Form(object):
  def setupUi(self, Form):
    Form.setObjectName("Form")
    Form.resize(443, 120)
    self.widget = QtWidgets.QWidget(Form)
    self.widget.setGeometry(QtCore.QRect(50, 40, 301, 25))
    self.widget.setObjectName("widget")
    self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
    self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
    self.horizontalLayout.setObjectName("horizontalLayout")
    self.openFileButton = QtWidgets.QPushButton(self.widget)
    self.openFileButton.setObjectName("openFileButton")
    self.horizontalLayout.addWidget(self.openFileButton)
    self.filePathlineEdit = QtWidgets.QLineEdit(self.widget)
    self.filePathlineEdit.setObjectName("filePathlineEdit")
    self.horizontalLayout.addWidget(self.filePathlineEdit)
    self.retranslateUi(Form)
    QtCore.QMetaObject.connectSlotsByName(Form)
  def retranslateUi(self, Form):
    _translate = QtCore.QCoreApplication.translate
    Form.setWindowTitle(_translate("Form", "QFileDialog打開(kāi)文件例子"))
    self.openFileButton.setText(_translate("Form", "打開(kāi)文件"))
class MyMainForm(QMainWindow, Ui_Form):
  def __init__(self, parent=None):
    super(MyMainForm, self).__init__(parent)
    self.setupUi(self)
    self.openFileButton.clicked.connect(self.openFile)
  def openFile(self):
    get_directory_path = QFileDialog.getExistingDirectory(self,
                  "選取指定文件夾",
                  "C:/")
    self.filePathlineEdit.setText(str(get_directory_path))
    get_filename_path, ok = QFileDialog.getOpenFileName(self,
                  "選取單個(gè)文件",
                  "C:/",
                  "All Files (*);;Text Files (*.txt)")
    if ok:
      self.filePathlineEdit.setText(str(get_filename_path))
    get_filenames_path, ok = QFileDialog.getOpenFileNames(self,
                  "選取多個(gè)文件",
                  "C:/",
                  "All Files (*);;Text Files (*.txt)")
    if ok:
      self.filePathlineEdit.setText(str(' '.join(get_filenames_path)))
if __name__ == "__main__":
  app = QApplication(sys.argv)
  myWin = MyMainForm()
  myWin.show()
  sys.exit(app.exec_())

 關(guān)鍵代碼介紹

    QFileDialog.getOpenFileName(self,"選取單個(gè)文件","C:/","All Files (*);;Text Files (*.txt)") -> 獲取單個(gè)指定文件的絕對(duì)路徑

   getOpenFileName()參數(shù)說(shuō)明:

   第1個(gè)參數(shù):用于指定父組件

   第2個(gè)參數(shù):對(duì)話框標(biāo)題

   第3個(gè)參數(shù):對(duì)話框顯示時(shí)默認(rèn)打開(kāi)的目錄。"."表示當(dāng)前程序所在目錄,“/”表示當(dāng)前盤(pán)下的根目錄。

    第4個(gè)參數(shù):對(duì)話框中文件擴(kuò)展名過(guò)濾器。All Files (*);;Text Files (*.txt)表示可以選擇所有文件類型或者只顯示.txt后綴的文件類型。

  QFileDialog.getExistingDirectory(self,"選取指定文件夾","C:/") -> 獲取指定文件夾的絕對(duì)路徑

  QFileDialog.getOpenFileNames(self,"選取多個(gè)文件","C:/","All Files (*);;Text Files (*.txt)") -> 獲取多個(gè)指定文件的絕對(duì)路徑

小結(jié)

  本文介紹了消息彈出對(duì)話框、用戶輸入對(duì)話框以及文件打開(kāi)對(duì)話框的基本使用方法。內(nèi)容覆蓋了這三類控件的基本使用場(chǎng)景??梢蚤_(kāi)始動(dòng)手嘗試了。。

以上所述是小編給大家介紹的PyQt5基本控件使用之消息彈出、用戶輸入、文件對(duì)話框的使用方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • 教你用python3根據(jù)關(guān)鍵詞爬取百度百科的內(nèi)容

    教你用python3根據(jù)關(guān)鍵詞爬取百度百科的內(nèi)容

    這篇文章介紹的是利用python3根據(jù)關(guān)鍵詞爬取百度百科的內(nèi)容,注意本文用的是python3版本以及根據(jù)關(guān)鍵詞爬取,爬取也只是單純的爬網(wǎng)頁(yè)信息,有需要的可以參考借鑒。
    2016-08-08
  • Python3爬蟲(chóng)帶上cookie的實(shí)例代碼

    Python3爬蟲(chóng)帶上cookie的實(shí)例代碼

    在本篇文章里小編給各位分享的是一篇關(guān)于Python3爬蟲(chóng)帶上cookie的實(shí)例代碼內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • 一篇文章帶你了解python字典基礎(chǔ)

    一篇文章帶你了解python字典基礎(chǔ)

    這篇文章主要介紹了Python字典及字典基本操作方法,結(jié)合實(shí)例形式詳細(xì)分析了Python字典的概念、創(chuàng)建、格式化及常用操作方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2021-08-08
  • 詳解Python3中ceil()函數(shù)用法

    詳解Python3中ceil()函數(shù)用法

    在本篇內(nèi)容里我們給大家整理了關(guān)于Python3中ceil()函數(shù)用法以及相關(guān)知識(shí)點(diǎn),需要的學(xué)習(xí)一下吧。
    2019-02-02
  • Flask之請(qǐng)求鉤子的實(shí)現(xiàn)

    Flask之請(qǐng)求鉤子的實(shí)現(xiàn)

    這篇文章主要介紹了Flask之請(qǐng)求鉤子的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • 使用Python計(jì)算兩個(gè)不同列表的相似度

    使用Python計(jì)算兩個(gè)不同列表的相似度

    這篇文章主要介紹了使用Python計(jì)算兩個(gè)不同列表的相似度,Python數(shù)據(jù)開(kāi)發(fā)工作中的需求兩個(gè)不同列表給出相似度,本文實(shí)現(xiàn)判斷數(shù)字類型相似度和字符串類型相似度,非常實(shí)用,需要的朋友可以參考下
    2023-07-07
  • Python面向?qū)ο箢惱^承和組合實(shí)例分析

    Python面向?qū)ο箢惱^承和組合實(shí)例分析

    這篇文章主要介紹了Python面向?qū)ο箢惱^承和組合,結(jié)合實(shí)例形式分析了Python3面向?qū)ο罄^承的原理、用法以及繼承與組合相關(guān)使用技巧,需要的朋友可以參考下
    2018-05-05
  • Python3實(shí)現(xiàn)英文字母轉(zhuǎn)換哥特式字體實(shí)例代碼

    Python3實(shí)現(xiàn)英文字母轉(zhuǎn)換哥特式字體實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Python3實(shí)現(xiàn)英文字母轉(zhuǎn)換哥特式字體的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python基礎(chǔ)-特殊方法整理詳解

    Python基礎(chǔ)-特殊方法整理詳解

    python中特殊方法(魔術(shù)方法)是被python解釋器調(diào)用的,我們自己不需要調(diào)用它們,我們統(tǒng)一使用內(nèi)置函數(shù)來(lái)使用。本篇文章將對(duì)其詳細(xì)介紹,感興趣的小伙伴可以參考下面文章的具體內(nèi)容
    2021-09-09
  • 在PyCharm中批量查找及替換的方法

    在PyCharm中批量查找及替換的方法

    今天小編就為大家分享一篇在PyCharm中批量查找及替換的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01

最新評(píng)論

沐川县| 丽江市| 亳州市| 金川县| 金溪县| 荣成市| 漯河市| 乌拉特后旗| 东至县| 遵义县| 右玉县| 长岛县| 蓬安县| 和政县| 华容县| 平山县| 甘南县| 兴仁县| 综艺| 太保市| 新郑市| 荆州市| 陆河县| 沧州市| 仙居县| 潍坊市| 连城县| 花莲市| 湘阴县| 河津市| 定结县| 宁化县| 万载县| 玛沁县| 广饶县| 义马市| 香格里拉县| 和林格尔县| 旬邑县| 磴口县| 华阴市|