本文实例讲述了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,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) #输入对话框 取整数 def setInteger(self): intNum, ok = QInputDialog.getInt(self, "QInputDialog.getInteger()","Percentage:", 25, 0, 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, 0, 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()), self, "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()", MESSAGE, 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()", MESSAGE, 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程序设计有所帮助。
定义 函数示引用对话框。 图片展示 代码演示 // 页面引用DialogLayout 注意DialogLayout的父级最好不要出现滚动条,以免定位不准确 import jimu from 'pile' const DialogLayout = jimu.Dialog.DialogLayout // 引入以后就可以在全局下调用这三种弹窗了 window.alertDialog({ msg
在设计较为复杂的对话框时,常常会遇到这种情况:对某一事物的设置或选项需要用到大量的控件,以至于一个对话框放不下,而这些控件描述的是类似的属性,不能分开。用普通的对话框技术,这一问题很难解决。 MFC提供了对标签式对话框的支持,可以很好的解决上述问题。标签式对话框实际上是一个包含了多个子对话框的对话框,这些子对话框通常被称为页(Page)。每次只有一个页是可见的,在对话框的顶端有一行标签,用户通过单
本文向大家介绍如何使用JavaScript显示提示对话框?,包括了如何使用JavaScript显示提示对话框?的使用技巧和注意事项,需要的朋友参考一下 当您要弹出文本框以获取用户输入时,提示对话框非常有用。因此,它使您可以与用户进行交互。用户需要填写该字段,然后单击“确定”。 使用称为的方法显示此对话框,该方法带有两个参数:(i)您要在文本框中显示的标签,以及(ii)要在文本框中显示的默认字符串。
本文向大家介绍Android使用setCustomTitle()方法自定义对话框标题,包括了Android使用setCustomTitle()方法自定义对话框标题的使用技巧和注意事项,需要的朋友参考一下 Android有自带的对话框标题,但是不太美观,如果要给弹出的对话框设置一个自定义的标题,使用AlertDialog.Builder的setCustomTitle()方法。 运行效果如下,左边是点
本文向大家介绍Android中Notification 提示对话框,包括了Android中Notification 提示对话框的使用技巧和注意事项,需要的朋友参考一下 Notification,俗称通知,是一种具有全局效果的通知,它展示在屏幕的顶端,首先会表现为一个图标的形式,当用户向下滑动的时候,展示出通知具体的内容。 一、Notification用于状态栏显示通知的控件,在不同的设备上面Not
在Netbeans中,我创建了一个GUI项目,该项目使用框架前端,我可以添加组件并双击以编辑其事件。我指的是有“源”、“设计”和“历史”选项卡的窗口。 以下是组件和关系: 1-打开文件选择器的按钮。 2-显示文件选择器结果的文本区域。如果用户选择一个文件,它将在文本区域显示文件名;否则它会写“被用户取消”。 3-同时,如果用户选择了一个文件,我想打开一个“please wait”(请等待)对话框,