[python zip]Python PyQt5标准对话框用法示例

时间:2021-08-12  来源:python  阅读:

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

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

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

效果图:

完整代码:

# -*- coding: utf-8 -*-
fromPyQt5.QtGuiimport*
fromPyQt5.QtCoreimport*
fromPyQt5.QtWidgetsimport*
importsys
classDialogOptionsWidget(QWidget):
 def__init__(self, parent=None):
  super(DialogOptionsWidget,self).__init__(parent)
 defaddCheckBox(self, text, value):
  pass
 defaddSpacer():
  pass
 defvalue():
  pass
classStandardDialog(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,0)
  layout.addWidget(self.label_integer,0,1)
  layout.addWidget(pushButton_double,1,0)
  layout.addWidget(self.label_double,1,1)
  layout.addWidget(pushButton_item,2,0)
  layout.addWidget(self.label_item,2,1)
  layout.addWidget(pushButton_text,3,0)
  layout.addWidget(self.label_text,3,1)
  layout.addWidget(pushButton_multiLineText,4,0)
  layout.addWidget(self.label_multiLineText,4,1)
  layout.addItem(QSpacerItem(0,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,0)
  layout.addWidget(self.label_color,0,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,QSizePolicy.Ignored,QSizePolicy.MinimumExpanding),1,0)
  layout.addWidget(colorDialogOptionsWidget,2,0,1,2)
  toolbox.addItem(page,"Color Dialog")
  page=QWidget()
  layout=QGridLayout(page)
  layout.setColumnStretch(1,1)
  layout.addWidget(pushButton_font,0,0)
  layout.addWidget(self.label_font,0,1)
  fontDialogOptionsWidget=DialogOptionsWidget()
  fontDialogOptionsWidget.addCheckBox("Do not use native dialog", QFontDialog.DontUseNativeDialog)
  fontDialogOptionsWidget.addCheckBox("No buttons", QFontDialog.NoButtons)
  layout.addItem(QSpacerItem(0,0, QSizePolicy.Ignored, QSizePolicy.MinimumExpanding),1,0)
  layout.addWidget(fontDialogOptionsWidget,2,0,1,2)
  toolbox.addItem(page,"Font Dialog")
  page=QWidget()
  layout=QGridLayout(page)
  layout.setColumnStretch(1,1)
  layout.addWidget(pushButton_directory,0,0)
  layout.addWidget(self.label_directory,0,1)
  layout.addWidget(pushButton_openFileName,1,0)
  layout.addWidget(self.label_openFileName,1,1)
  layout.addWidget(pushButton_openFileNames,2,0)
  layout.addWidget(self.label_openFileNames,2,1)
  layout.addWidget(pushButton_saveFileName,3,0)
  layout.addWidget(self.label_saveFileName,3,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, QSizePolicy.Ignored, QSizePolicy.MinimumExpanding),4,0)
  layout.addWidget(fileDialogOptionsWidget,5,0,1,2)
  toolbox.addItem(page,"File Dialogs")
  page=QWidget()
  layout=QGridLayout(page)
  layout.setColumnStretch(1,1)
  layout.addWidget(pushButton_critical,0,0)
  layout.addWidget(self.label_critical,0,1)
  layout.addWidget(pushButton_information,1,0)
  layout.addWidget(self.label_information,1,1)
  layout.addWidget(pushButton_question,2,0)
  layout.addWidget(self.label_question,2,1)
  layout.addWidget(pushButton_warning,3,0)
  layout.addWidget(self.label_warning,3,1)
  layout.addWidget(pushButton_error,4,0)
  layout.addWidget(self.label_error,4,1)
  layout.addItem(QSpacerItem(0,0, QSizePolicy.Ignored, QSizePolicy.MinimumExpanding),5,0)
  toolbox.addItem(page,"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)
 #输入对话框 取整数
 defsetInteger(self):
  intNum, ok=QInputDialog.getInt(self,"QInputDialog.getInteger()","Percentage:",25,0,100,1)
  ifok:
   self.label_integer.setText(str(intNum))
 #输入对话框 取实数
 defsetDouble(self):
  doubleNum, ok=QInputDialog.getDouble(self,"QInputDialog.getDouble()","Amount:",37.56,-10000,10000,2)
  ifok:
   self.label_double.setText(str(doubleNum))
 #输入对话框 取列表项
 defsetItem(self):
  items=["Spring","Summer","Fall","Winter"]
  item, ok=QInputDialog.getItem(self,"QInputDialog.getItem()","Season:", items,0,False)
  ifokanditem:
   self.label_item.setText(item)
 #输入对话框 取文本
 defsetText(self):
  text, ok=QInputDialog.getText(self,"QInputDialog.getText()","User name:", QLineEdit.Normal, QDir.home().dirName())
  ifokandtext:
   self.label_text.setText(text)
 #输入对话框 取多行文本
 defsetMultiLineText(self):
  text, ok=QInputDialog.getMultiLineText(self,"QInputDialog.getMultiLineText()","Address:","John Doe\nFreedom Street")
  ifokandtext:
   self.label_multiLineText.setText(text)
 #颜色对话框 取颜色
 defsetColor(self):
  #options = QColorDialog.ColorDialogOptions(QFlag.QFlag(colorDialogOptionsWidget.value()))
  color=QColorDialog.getColor(Qt.green,self,"Select Color")
  ifcolor.isValid():
   self.label_color.setText(color.name())
   self.label_color.setPalette(QPalette(color))
   self.label_color.setAutoFillBackground(True)
 #字体对话框 取字体
 defsetFont(self):
  #options = QFontDialog.FontDialogOptions(QFlag(fontDialogOptionsWidget.value()))
  #font, ok = QFontDialog.getFont(ok, QFont(self.label_font.text()), self, "Select Font",options)
  font, ok=QFontDialog.getFont()
  ifok:
   self.label_font.setText(font.key())
   self.label_font.setFont(font)
 #目录对话框 取目录
 defsetExistingDirectory(self):
  #options = QFileDialog.Options(QFlag(fileDialogOptionsWidget->value()))
  #options |= QFileDialog.DontResolveSymlinks | QFileDialog.ShowDirsOnly
  directory=QFileDialog.getExistingDirectory(self,
         "QFileDialog.getExistingDirectory()",
         self.label_directory.text())
  ifdirectory:
   self.label_directory.setText(directory)
 #打开文件对话框 取文件名
 defsetOpenFileName(self):
  #options = QFileDialog.Options(QFlag(fileDialogOptionsWidget.value()))
  #selectedFilter
  fileName, filetype=QFileDialog.getOpenFileName(self,
         "QFileDialog.getOpenFileName()",
         self.label_openFileName.text(),
         "All Files (*);;Text Files (*.txt)")
  iffileName:
   self.label_openFileName.setText(fileName)
 #打开文件对话框 取一组文件名
 defsetOpenFileNames(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)")
  iflen(files):
   self.label_openFileNames.setText(", ".join(files))
 #保存文件对话框 取文件名
 defsetSaveFileName(self):
  #options = QFileDialog.Options(QFlag(fileDialogOptionsWidget.value()))
  #selectedFilter
  fileName, ok=QFileDialog.getSaveFileName(self,
         "QFileDialog.getSaveFileName()",
         self.label_saveFileName.text(),
         "All Files (*);;Text Files (*.txt)")
  iffileName:
   self.label_saveFileName.setText(fileName)
 defcriticalMessage(self):
  #reply = QMessageBox.StandardButton()
  MESSAGE="批评!"
  reply=QMessageBox.critical(self,
         "QMessageBox.critical()",
         MESSAGE,
         QMessageBox.Abort | QMessageBox.Retry | QMessageBox.Ignore)
  ifreply==QMessageBox.Abort:
   self.label_critical.setText("Abort")
  elifreply==QMessageBox.Retry:
   self.label_critical.setText("Retry")
  else:
   self.label_critical.setText("Ignore")
 definformationMessage(self):
  MESSAGE="信息"
  reply=QMessageBox.information(self,"QMessageBox.information()", MESSAGE)
  ifreply==QMessageBox.Ok:
   self.label_information.setText("OK")
  else:
   self.label_information.setText("Escape")
 defquestionMessage(self):
  MESSAGE="疑问"
  reply=QMessageBox.question(self,"QMessageBox.question()",
         MESSAGE,
         QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)
  ifreply==QMessageBox.Yes:
   self.label_question.setText("Yes")
  elifreply==QMessageBox.No:
   self.label_question.setText("No")
  else:
   self.label_question.setText("Cancel")
 defwarningMessage(self):
  MESSAGE="警告文本"
  msgBox=QMessageBox(QMessageBox.Warning,
       "QMessageBox.warning()",
        MESSAGE,
        QMessageBox.Retry | QMessageBox.Discard | QMessageBox.Cancel,
        self)
  msgBox.setDetailedText("详细信息。。。")
  #msgBox.addButton("Save &Again", QMessageBox.AcceptRole)
  #msgBox.addButton("&Continue", QMessageBox.RejectRole)
  ifmsgBox.exec()==QMessageBox.AcceptRole:
   self.label_warning.setText("Retry")
  else:
   self.label_warning.setText("Abort")
 deferrorMessage(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 zip]Python PyQt5标准对话框用法示例

http://m.bbyears.com/jiaocheng/135455.html

推荐访问:python基础教程 python3
相关阅读 猜你喜欢
本类排行 本类最新