您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python PyQt5标准对话框用法示例

5b51 2022/1/14 8:16:37 python 字数 23239 阅读 344 来源 www.jb51.cc/python

本文实例讲述了PythonPyQt5标准对话框用法。分享给大家供大家参考,具体如下:

概述

本文实例讲述了Python PyQt5标准对话框用法分享给大家供大家参考,具体如下:

很全的Qt的标准对话框,包含QInputDialog、QColorDialog、QFontDialog、QMessageBox、QOpenFileDialog...

全部是由官网的C++版本,转换成PyQt5版本。

有些细节忽略了,因为实在不知怎么转换过来。捣鼓了一晚上,总算完成了,好累啊,不过很开心!

效果图:

完整代码

# -*- coding: utf-8 -*-
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
class DialogoptionsWidget(QWidget):
 def __init__(self,parent=None):
  super(DialogoptionsWidget,self).__init__(parent)
 def addCheckBox(self,text,value):
  pass
 def addspacer():
  pass
 def value():
  pass
class StandardDialog(QDialog):
 def __init__(self,parent=None):
  super(StandardDialog,self).__init__(parent)
  self.setWindowTitle("Standard Dialog")
  frameStyle = QFrame.Sunken | QFrame.Panel
  mainLayout = QVBoxLayout(self)
  toolBox = QToolBox()
  mainLayout.addWidget(toolBox)
  self.errorMessageDialog = QErrorMessage(self)
  pushButton_integer = QPushButton("QInputDialog.get&Int()")
  pushButton_double = QPushButton("QInputDialog.get&Double()")
  pushButton_item = QPushButton("QInputDialog.getIte&m()")
  pushButton_text = QPushButton("QInputDialog.get&Text()")
  pushButton_multiLineText = QPushButton("QInputDialog.get&MultiLineText()")
  pushButton_color = QPushButton("QColorDialog.get&Color()")
  pushButton_font = QPushButton("QFontDialog.get&Font()")
  pushButton_directory = QPushButton("QFileDialog.getE&xistingDirectory()")
  pushButton_openFileName = QPushButton("QFileDialog.get&OpenFileName()")
  pushButton_openFileNames = QPushButton("QFileDialog.&getOpenFileNames()")
  pushButton_saveFileName = QPushButton("QFileDialog.get&SaveFileName()")
  pushButton_critical = QPushButton("QMessageBox.critica&l()")
  pushButton_information = QPushButton("QMessageBox.i&nformation()")
  pushButton_question = QPushButton("QQMessageBox.&question()")
  pushButton_warning = QPushButton("QMessageBox.&warning()")
  pushButton_error = QPushButton("QErrorMessage.showM&essage()")
  self.label_integer = QLabel()
  self.label_double = QLabel()
  self.label_item = QLabel()
  self.label_text = QLabel()
  self.label_multiLineText = QLabel()
  self.label_color = QLabel()
  self.label_font = QLabel()
  self.label_directory = QLabel()
  self.label_openFileName = QLabel()
  self.label_openFileNames = QLabel()
  self.label_saveFileName = QLabel()
  self.label_critical = QLabel()
  self.label_information = QLabel()
  self.label_question = QLabel()
  self.label_warning = QLabel()
  self.label_error = QLabel()
  self.label_integer.setFrameStyle(frameStyle)
  self.label_double.setFrameStyle(frameStyle)
  self.label_item.setFrameStyle(frameStyle)
  self.label_text.setFrameStyle(frameStyle)
  self.label_multiLineText.setFrameStyle(frameStyle)
  self.label_color.setFrameStyle(frameStyle)
  self.label_font.setFrameStyle(frameStyle)
  self.label_directory.setFrameStyle(frameStyle)
  self.label_openFileName.setFrameStyle(frameStyle)
  self.label_openFileNames.setFrameStyle(frameStyle)
  self.label_saveFileName.setFrameStyle(frameStyle)
  self.label_critical.setFrameStyle(frameStyle)
  self.label_information.setFrameStyle(frameStyle)
  self.label_question.setFrameStyle(frameStyle)
  self.label_warning.setFrameStyle(frameStyle)
  self.label_error.setFrameStyle(frameStyle)
  page = QWidget()
  layout = QGridLayout(page)
  layout.setColumnStretch(1,1)
  layout.setColumnMinimumWidth(1,250)
  layout.addWidget(pushButton_integer,0)
  layout.addWidget(self.label_integer,1)
  layout.addWidget(pushButton_double,1,0)
  layout.addWidget(self.label_double,1)
  layout.addWidget(pushButton_item,2,0)
  layout.addWidget(self.label_item,1)
  layout.addWidget(pushButton_text,3,0)
  layout.addWidget(self.label_text,1)
  layout.addWidget(pushButton_multiLineText,4,0)
  layout.addWidget(self.label_multiLineText,1)
  layout.addItem(QSpacerItem(0,QSizePolicy.Ignored,QSizePolicy.MinimumExpanding),5,0)
  toolBox.addItem(page,"Input Dialog")
  page = QWidget()
  layout = QGridLayout(page)
  layout.setColumnStretch(1,1)
  #layout.setColumnMinimumWidth(1,250)
  layout.addWidget(pushButton_color,0)
  layout.addWidget(self.label_color,1)
  colorDialogoptionsWidget = DialogoptionsWidget()
  colorDialogoptionsWidget.addCheckBox("Do not use native dialog",QColorDialog.DontUseNativeDialog)
  colorDialogoptionsWidget.addCheckBox("Show alpha channel",QColorDialog.ShowAlphaChannel)
  colorDialogoptionsWidget.addCheckBox("No buttons",QColorDialog.NoButtons)
  layout.addItem(QSpacerItem(0,0)
  layout.addWidget(colorDialogoptionsWidget,2)
  toolBox.addItem(page,"Color Dialog")
  page = QWidget()
  layout = QGridLayout(page)
  layout.setColumnStretch(1,1)
  layout.addWidget(pushButton_font,0)
  layout.addWidget(self.label_font,1)
  fontDialogoptionsWidget = DialogoptionsWidget()
  fontDialogoptionsWidget.addCheckBox("Do not use native dialog",QFontDialog.DontUseNativeDialog)
  fontDialogoptionsWidget.addCheckBox("No buttons",QFontDialog.NoButtons)
  layout.addItem(QSpacerItem(0,0)
  layout.addWidget(fontDialogoptionsWidget,"Font Dialog")
  page = QWidget()
  layout = QGridLayout(page)
  layout.setColumnStretch(1,1)
  layout.addWidget(pushButton_directory,0)
  layout.addWidget(self.label_directory,1)
  layout.addWidget(pushButton_openFileName,0)
  layout.addWidget(self.label_openFileName,1)
  layout.addWidget(pushButton_openFileNames,0)
  layout.addWidget(self.label_openFileNames,1)
  layout.addWidget(pushButton_saveFileName,0)
  layout.addWidget(self.label_saveFileName,1)
  fileDialogoptionsWidget = DialogoptionsWidget()
  fileDialogoptionsWidget.addCheckBox("Do not use native dialog",QFileDialog.DontUseNativeDialog)
  fileDialogoptionsWidget.addCheckBox("Show directories only",QFileDialog.ShowDirsOnly)
  fileDialogoptionsWidget.addCheckBox("Do not resolve symlinks",QFileDialog.DontResolveSymlinks)
  fileDialogoptionsWidget.addCheckBox("Do not confirm overwrite",QFileDialog.DontConfirmOverwrite)
  fileDialogoptionsWidget.addCheckBox("Do not use sheet",QFileDialog.DontUseSheet)
  fileDialogoptionsWidget.addCheckBox("Readonly",QFileDialog.ReadOnly)
  fileDialogoptionsWidget.addCheckBox("Hide name filter details",QFileDialog.HideNameFilterDetails)
  layout.addItem(QSpacerItem(0,0)
  layout.addWidget(fileDialogoptionsWidget,"File Dialogs")
  page = QWidget()
  layout = QGridLayout(page)
  layout.setColumnStretch(1,1)
  layout.addWidget(pushButton_critical,0)
  layout.addWidget(self.label_critical,1)
  layout.addWidget(pushButton_information,0)
  layout.addWidget(self.label_information,1)
  layout.addWidget(pushButton_question,0)
  layout.addWidget(self.label_question,1)
  layout.addWidget(pushButton_warning,0)
  layout.addWidget(self.label_warning,1)
  layout.addWidget(pushButton_error,0)
  layout.addWidget(self.label_error,"Message Boxes")
  pushButton_integer.clicked.connect(self.setInteger)
  pushButton_double.clicked.connect(self.setDouble)
  pushButton_item.clicked.connect(self.setItem)
  pushButton_text.clicked.connect(self.setText)
  pushButton_multiLineText.clicked.connect(self.setMultiLineText)
  pushButton_color.clicked.connect(self.setColor)
  pushButton_font.clicked.connect(self.setFont)
  pushButton_directory.clicked.connect(self.setExistingDirectory)
  pushButton_openFileName.clicked.connect(self.setOpenFileName)
  pushButton_openFileNames.clicked.connect(self.setOpenFileNames)
  pushButton_saveFileName.clicked.connect(self.setSaveFileName)
  pushButton_critical.clicked.connect(self.criticalMessage)
  pushButton_information.clicked.connect(self.informationMessage)
  pushButton_question.clicked.connect(self.questionMessage)
  pushButton_warning.clicked.connect(self.warningMessage)
  pushButton_error.clicked.connect(self.errorMessage)
 #输入对话框 取整数
 def setInteger(self):
  intNum,ok = QInputDialog.getInt(self,"QInputDialog.getInteger()","Percentage:",25,100,1)
  if ok:
   self.label_integer.setText(str(intNum))
 #输入对话框 取实数
 def setDouble(self):
  doubleNum,ok = QInputDialog.getDouble(self,"QInputDialog.getDouble()","Amount:",37.56,-10000,10000,2)
  if ok:
   self.label_double.setText(str(doubleNum))
 #输入对话框 取列表项
 def setItem(self):
  items = ["Spring","Summer","Fall","Winter"]
  item,ok = QInputDialog.getItem(self,"QInputDialog.getItem()","Season:",items,False)
  if ok and item:
   self.label_item.setText(item)
 #输入对话框 取文本
 def setText(self):
  text,ok = QInputDialog.getText(self,"QInputDialog.getText()","User name:",QLineEdit.Normal,QDir.home().dirName())
  if ok and text:
   self.label_text.setText(text)
 #输入对话框 取多行文本
 def setMultiLineText(self):
  text,ok = QInputDialog.getMultiLineText(self,"QInputDialog.getMultiLineText()","Address:","John Doe\nFreedom Street")
  if ok and text:
   self.label_multiLineText.setText(text)
 #颜色对话框 取颜色
 def setColor(self):
  #options = QColorDialog.ColorDialogoptions(QFlag.QFlag(colorDialogoptionsWidget.value()))
  color = QColorDialog.getColor(Qt.green,self,"Select Color")
  if color.isValid():
   self.label_color.setText(color.name())
   self.label_color.setPalette(QPalette(color))
   self.label_color.setAutoFillBackground(True)
 #字体对话框 取字体
 def setFont(self):
  #options = QFontDialog.FontDialogoptions(QFlag(fontDialogoptionsWidget.value()))
  #font,ok = QFontDialog.getFont(ok,QFont(self.label_font.text()),"Select Font",options)
  font,ok = QFontDialog.getFont()
  if ok:
   self.label_font.setText(font.key())
   self.label_font.setFont(font)
 #目录对话框 取目录
 def setExistingDirectory(self):
  #options = QFileDialog.Options(QFlag(fileDialogoptionsWidget->value()))
  #options |= QFileDialog.DontResolveSymlinks | QFileDialog.ShowDirsOnly
  directory = QFileDialog.getExistingDirectory(self,"QFileDialog.getExistingDirectory()",self.label_directory.text())
  if directory:
   self.label_directory.setText(directory)
 #打开文件对话框 取文件名
 def setOpenFileName(self):
  #options = QFileDialog.Options(QFlag(fileDialogoptionsWidget.value()))
  #selectedFilter
  fileName,filetype = QFileDialog.getOpenFileName(self,"QFileDialog.getOpenFileName()",self.label_openFileName.text(),"All Files (*);;Text Files (*.txt)")
  if fileName:
   self.label_openFileName.setText(fileName)
 #打开文件对话框 取一组文件名
 def setOpenFileNames(self):
  #options = QFileDialog.Options(QFlag(fileDialogoptionsWidget.value()))
  #selectedFilter
  openFilesPath = "D:/documents/pyMarksix/draw/"
  files,ok = QFileDialog.getOpenFileNames(self,"QFileDialog.getOpenFileNames()",openFilesPath,"All Files (*);;Text Files (*.txt)")
  if len(files):
   self.label_openFileNames.setText(",".join(files))
 #保存文件对话框 取文件名
 def setSaveFileName(self):
  #options = QFileDialog.Options(QFlag(fileDialogoptionsWidget.value()))
  #selectedFilter
  fileName,ok = QFileDialog.getSaveFileName(self,"QFileDialog.getSaveFileName()",self.label_saveFileName.text(),"All Files (*);;Text Files (*.txt)")
  if fileName:
   self.label_saveFileName.setText(fileName)
 def criticalMessage(self):
  #reply = QMessageBox.StandardButton()
  MESSAGE = "批评!"
  reply = QMessageBox.critical(self,"QMessageBox.critical()",MESSAGE,QMessageBox.Abort | QMessageBox.Retry | QMessageBox.Ignore)
  if reply == QMessageBox.Abort:
   self.label_critical.setText("Abort")
  elif reply == QMessageBox.Retry:
   self.label_critical.setText("Retry")
  else:
   self.label_critical.setText("Ignore")
 def informationMessage(self):
  MESSAGE = "信息"
  reply = QMessageBox.information(self,"QMessageBox.information()",MESSAGE)
  if reply == QMessageBox.Ok:
   self.label_information.setText("OK")
  else:
   self.label_information.setText("Escape")
 def questionMessage(self):
  MESSAGE = "疑问"
  reply = QMessageBox.question(self,"QMessageBox.question()",QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)
  if reply == QMessageBox.Yes:
   self.label_question.setText("Yes")
  elif reply == QMessageBox.No:
   self.label_question.setText("No")
  else:
   self.label_question.setText("Cancel")
 def warningMessage(self):
  MESSAGE = "警告文本"
  msgBox = QMessageBox(QMessageBox.Warning,"QMessageBox.warning()",QMessageBox.Retry | QMessageBox.Discard | QMessageBox.Cancel,self)
  msgBox.setDetailedText("详细信息。。。")
  #msgBox.addButton("Save &Again",QMessageBox.AcceptRole)
  #msgBox.addButton("&Continue",QMessageBox.RejectRole)
  if msgBox.exec() == QMessageBox.AcceptRole:
   self.label_warning.setText("Retry")
  else:
   self.label_warning.setText("Abort")
 def errorMessage(self):
  self.errorMessageDialog.showMessage(
     "This dialog shows and remembers error messages. "
     "If the checkBox is checked (as it is by default),"
     "the shown message will be shown again,"
     "but if the user unchecks the Box the message "
     "will not appear again if QErrorMessage.showMessage() "
     "is called with the same message.")
  self.label_error.setText("If the Box is unchecked,the message "
        "won't appear again.")
app=QApplication(sys.argv)
form=StandardDialog()
form.show()
app.exec_()

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

总结

以上是编程之家为你收集整理的Python PyQt5标准对话框用法示例全部内容,希望文章能够帮你解决Python PyQt5标准对话框用法示例所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶