【PyQt5-Qt Designer】Qt 的标准对话框总结【PyQt5-Qt Designer】Qt 的标准对话框总结

 

忙碌了两天才总结完,深刻体会到 “编程在实践中才能领悟更深”,后续有了更多的 理解继续来补充。。。

效果如下:

【PyQt5-Qt Designer】Qt 的标准对话框总结

参考:

https://www.cnblogs.com/hhh5460/p/4271475.html

  1 # -*- coding: utf-8 -*-
  2 from PyQt5.QtGui import *
  3 from PyQt5.QtCore import *
  4 from PyQt5.QtWidgets import *
  5 import sys
  6 
  7 
  8 class DialogOptionsWidget(QWidget):
  9     def __init__(self, parent=None):
 10         super(DialogOptionsWidget, self).__init__(parent)
 11 
 12     def addCheckBox(self, text, value):
 13         pass
 14 
 15     def addSpacer():
 16         pass
 17 
 18     def value():
 19         pass
 20 
 21 class StandardDialog(QDialog):
 22     def __init__(self, parent=None):
 23         super(StandardDialog, self).__init__(parent)
 24 
 25         self.setWindowTitle("Standard Dialog")
 26 
 27         frameStyle = QFrame.Sunken | QFrame.Panel
 28 
 29         mainLayout = QVBoxLayout(self)
 30         toolbox = QToolBox()
 31         mainLayout.addWidget(toolbox)
 32 
 33         self.errorMessageDialog = QErrorMessage(self)
 34 
 35         pushButton_integer = QPushButton("QInputDialog.get&Int()")
 36         pushButton_double = QPushButton("QInputDialog.get&Double()")
 37         pushButton_item = QPushButton("QInputDialog.getIte&m()")
 38         pushButton_text = QPushButton("QInputDialog.get&Text()")
 39         pushButton_multiLineText = QPushButton("QInputDialog.get&MultiLineText()")
 40         pushButton_color = QPushButton("QColorDialog.get&Color()")
 41         pushButton_font = QPushButton("QFontDialog.get&Font()")
 42         pushButton_directory = QPushButton("QFileDialog.getE&xistingDirectory()")
 43         pushButton_openFileName = QPushButton("QFileDialog.get&OpenFileName()")
 44         pushButton_openFileNames = QPushButton("QFileDialog.&getOpenFileNames()")
 45         pushButton_saveFileName = QPushButton("QFileDialog.get&SaveFileName()")
 46         pushButton_critical = QPushButton("QMessageBox.critica&l()")
 47         pushButton_information = QPushButton("QMessageBox.i&nformation()")
 48         pushButton_question = QPushButton("QQMessageBox.&question()")
 49         pushButton_warning = QPushButton("QMessageBox.&warning()")
 50         pushButton_error = QPushButton("QErrorMessage.showM&essage()")
 51 
 52         self.label_integer = QLabel()
 53         self.label_double = QLabel()
 54         self.label_item = QLabel()
 55         self.label_text = QLabel()
 56         self.label_multiLineText = QLabel()
 57         self.label_color = QLabel()
 58         self.label_font = QLabel()
 59         self.label_directory = QLabel()
 60         self.label_openFileName = QLabel()
 61         self.label_openFileNames = QLabel()
 62         self.label_saveFileName = QLabel()
 63         self.label_critical = QLabel()
 64         self.label_information = QLabel()
 65         self.label_question = QLabel()
 66         self.label_warning = QLabel()
 67         self.label_error = QLabel()
 68 
 69         self.label_integer.setFrameStyle(frameStyle)
 70         self.label_double.setFrameStyle(frameStyle)
 71         self.label_item.setFrameStyle(frameStyle)
 72         self.label_text.setFrameStyle(frameStyle)
 73         self.label_multiLineText.setFrameStyle(frameStyle)
 74         self.label_color.setFrameStyle(frameStyle)
 75         self.label_font.setFrameStyle(frameStyle)
 76         self.label_directory.setFrameStyle(frameStyle)
 77         self.label_openFileName.setFrameStyle(frameStyle)
 78         self.label_openFileNames.setFrameStyle(frameStyle)
 79         self.label_saveFileName.setFrameStyle(frameStyle)
 80         self.label_critical.setFrameStyle(frameStyle)
 81         self.label_information.setFrameStyle(frameStyle)
 82         self.label_question.setFrameStyle(frameStyle)
 83         self.label_warning.setFrameStyle(frameStyle)
 84         self.label_error.setFrameStyle(frameStyle)
 85 
 86         page = QWidget()
 87         layout = QGridLayout(page)
 88         layout.setColumnStretch(1, 1)
 89         layout.setColumnMinimumWidth(1, 250)
 90         layout.addWidget(pushButton_integer, 0, 0)
 91         layout.addWidget(self.label_integer, 0, 1)
 92         layout.addWidget(pushButton_double, 1, 0)
 93         layout.addWidget(self.label_double, 1, 1)
 94         layout.addWidget(pushButton_item, 2, 0)
 95         layout.addWidget(self.label_item, 2, 1)
 96         layout.addWidget(pushButton_text, 3, 0)
 97         layout.addWidget(self.label_text, 3, 1)
 98         layout.addWidget(pushButton_multiLineText, 4, 0)
 99         layout.addWidget(self.label_multiLineText, 4, 1)
100         layout.addItem(QSpacerItem(0, 0, QSizePolicy.Ignored, QSizePolicy.MinimumExpanding), 5, 0)
101         toolbox.addItem(page, "Input Dialog")
102 
103         page = QWidget()
104         layout = QGridLayout(page)
105         layout.setColumnStretch(1, 1)
106         # layout.setColumnMinimumWidth(1,250)
107         layout.addWidget(pushButton_color, 0, 0)
108         layout.addWidget(self.label_color, 0, 1)
109         colorDialogOptionsWidget = DialogOptionsWidget()
110         colorDialogOptionsWidget.addCheckBox("Do not use native dialog", QColorDialog.DontUseNativeDialog)
111         colorDialogOptionsWidget.addCheckBox("Show alpha channel", QColorDialog.ShowAlphaChannel)
112         colorDialogOptionsWidget.addCheckBox("No buttons", QColorDialog.NoButtons)
113         layout.addItem(QSpacerItem(0, 0, QSizePolicy.Ignored, QSizePolicy.MinimumExpanding), 1, 0)
114         layout.addWidget(colorDialogOptionsWidget, 2, 0, 1, 2)
115         toolbox.addItem(page, "Color Dialog")
116 
117         page = QWidget()
118         layout = QGridLayout(page)
119         layout.setColumnStretch(1, 1)
120         layout.addWidget(pushButton_font, 0, 0)
121         layout.addWidget(self.label_font, 0, 1)
122         fontDialogOptionsWidget = DialogOptionsWidget()
123         fontDialogOptionsWidget.addCheckBox("Do not use native dialog", QFontDialog.DontUseNativeDialog)
124         fontDialogOptionsWidget.addCheckBox("No buttons", QFontDialog.NoButtons)
125         layout.addItem(QSpacerItem(0, 0, QSizePolicy.Ignored, QSizePolicy.MinimumExpanding), 1, 0)
126         layout.addWidget(fontDialogOptionsWidget, 2, 0, 1, 2)
127         toolbox.addItem(page, "Font Dialog")
128 
129         page = QWidget()
130         layout = QGridLayout(page)
131         layout.setColumnStretch(1, 1)
132         layout.addWidget(pushButton_directory, 0, 0)
133         layout.addWidget(self.label_directory, 0, 1)
134         layout.addWidget(pushButton_openFileName, 1, 0)
135         layout.addWidget(self.label_openFileName, 1, 1)
136         layout.addWidget(pushButton_openFileNames, 2, 0)
137         layout.addWidget(self.label_openFileNames, 2, 1)
138         layout.addWidget(pushButton_saveFileName, 3, 0)
139         layout.addWidget(self.label_saveFileName, 3, 1)
140         fileDialogOptionsWidget = DialogOptionsWidget()
141         fileDialogOptionsWidget.addCheckBox("Do not use native dialog", QFileDialog.DontUseNativeDialog)
142         fileDialogOptionsWidget.addCheckBox("Show directories only", QFileDialog.ShowDirsOnly)
143         fileDialogOptionsWidget.addCheckBox("Do not resolve symlinks", QFileDialog.DontResolveSymlinks)
144         fileDialogOptionsWidget.addCheckBox("Do not confirm overwrite", QFileDialog.DontConfirmOverwrite)
145         fileDialogOptionsWidget.addCheckBox("Do not use sheet", QFileDialog.DontUseSheet)
146         fileDialogOptionsWidget.addCheckBox("Readonly", QFileDialog.ReadOnly)
147         fileDialogOptionsWidget.addCheckBox("Hide name filter details", QFileDialog.HideNameFilterDetails)
148         layout.addItem(QSpacerItem(0, 0, QSizePolicy.Ignored, QSizePolicy.MinimumExpanding), 4, 0)
149         layout.addWidget(fileDialogOptionsWidget, 5, 0, 1, 2)
150         toolbox.addItem(page, "File Dialogs")
151 
152         page = QWidget()
153         layout = QGridLayout(page)
154         layout.setColumnStretch(1, 1)
155         layout.addWidget(pushButton_critical, 0, 0)
156         layout.addWidget(self.label_critical, 0, 1)
157         layout.addWidget(pushButton_information, 1, 0)
158         layout.addWidget(self.label_information, 1, 1)
159         layout.addWidget(pushButton_question, 2, 0)
160         layout.addWidget(self.label_question, 2, 1)
161         layout.addWidget(pushButton_warning, 3, 0)
162         layout.addWidget(self.label_warning, 3, 1)
163         layout.addWidget(pushButton_error, 4, 0)
164         layout.addWidget(self.label_error, 4, 1)
165         layout.addItem(QSpacerItem(0, 0, QSizePolicy.Ignored, QSizePolicy.MinimumExpanding), 5, 0)
166         toolbox.addItem(page, "Message Boxes")
167 
168         pushButton_integer.clicked.connect(self.setInteger)
169         pushButton_double.clicked.connect(self.setDouble)
170         pushButton_item.clicked.connect(self.setItem)
171         pushButton_text.clicked.connect(self.setText)
172         pushButton_multiLineText.clicked.connect(self.setMultiLineText)
173         pushButton_color.clicked.connect(self.setColor)
174         pushButton_font.clicked.connect(self.setFont)
175         pushButton_directory.clicked.connect(self.setExistingDirectory)
176         pushButton_openFileName.clicked.connect(self.setOpenFileName)
177         pushButton_openFileNames.clicked.connect(self.setOpenFileNames)
178         pushButton_saveFileName.clicked.connect(self.setSaveFileName)
179         pushButton_critical.clicked.connect(self.criticalMessage)
180         pushButton_information.clicked.connect(self.informationMessage)
181         pushButton_question.clicked.connect(self.questionMessage)
182         pushButton_warning.clicked.connect(self.warningMessage)
183         pushButton_error.clicked.connect(self.errorMessage)
184 
185     # 输入对话框 取整数
186     def setInteger(self):
187         intNum, ok = QInputDialog.getInt(self, "QInputDialog.getInteger()", "Percentage:", 25, 0, 100, 1)
188         if ok:
189             self.label_integer.setText(str(intNum))
190 
191     # 输入对话框 取实数
192     def setDouble(self):
193         doubleNum, ok = QInputDialog.getDouble(self, "QInputDialog.getDouble()", "Amount:", 37.56, -10000, 10000, 2)
194         if ok:
195             self.label_double.setText(str(doubleNum))
196 
197     # 输入对话框 取列表项
198     def setItem(self):
199         items = ["Spring", "Summer", "Fall", "Winter"]
200         item, ok = QInputDialog.getItem(self, "QInputDialog.getItem()", "Season:", items, 0, False)
201         if ok and item:
202             self.label_item.setText(item)
203 
204     # 输入对话框 取文本
205     def setText(self):
206         text, ok = QInputDialog.getText(self, "QInputDialog.getText()", "User name:", QLineEdit.Normal,
207                                         QDir.home().dirName())
208         if ok and text:
209             self.label_text.setText(text)
210 
211     # 输入对话框 取多行文本
212     def setMultiLineText(self):
213         text, ok = QInputDialog.getMultiLineText(self, "QInputDialog.getMultiLineText()", "Address:",
214                                                  "John Doe\nFreedom Street")
215         if ok and text:
216             self.label_multiLineText.setText(text)
217 
218     # 颜色对话框 取颜色
219     def setColor(self):
220         # options = QColorDialog.ColorDialogOptions(QFlag.QFlag(colorDialogOptionsWidget.value()))
221         color = QColorDialog.getColor(Qt.green, self, "Select Color")
222 
223         if color.isValid():
224             self.label_color.setText(color.name())
225             self.label_color.setPalette(QPalette(color))
226             self.label_color.setAutoFillBackground(True)
227 
228     # 字体对话框 取字体
229     def setFont(self):
230         # options = QFontDialog.FontDialogOptions(QFlag(fontDialogOptionsWidget.value()))
231         # font, ok = QFontDialog.getFont(ok, QFont(self.label_font.text()), self, "Select Font",options)
232         font, ok = QFontDialog.getFont()
233         if ok:
234             self.label_font.setText(font.key())
235             self.label_font.setFont(font)
236 
237     # 目录对话框 取目录
238     def setExistingDirectory(self):
239         # options = QFileDialog.Options(QFlag(fileDialogOptionsWidget->value()))
240         # options |= QFileDialog.DontResolveSymlinks | QFileDialog.ShowDirsOnly
241         directory = QFileDialog.getExistingDirectory(self,
242                                                      "QFileDialog.getExistingDirectory()",
243                                                      self.label_directory.text())
244         if directory:
245             self.label_directory.setText(directory)
246 
247     # 打开文件对话框 取文件名
248     def setOpenFileName(self):
249         # options = QFileDialog.Options(QFlag(fileDialogOptionsWidget.value()))
250         # selectedFilter
251         fileName, filetype = QFileDialog.getOpenFileName(self,
252                                                          "QFileDialog.getOpenFileName()",
253                                                          self.label_openFileName.text(),
254                                                          "All Files (*);;Text Files (*.txt)")
255         if fileName:
256             self.label_openFileName.setText(fileName)
257 
258     # 打开文件对话框 取一组文件名
259     def setOpenFileNames(self):
260         # options = QFileDialog.Options(QFlag(fileDialogOptionsWidget.value()))
261         # selectedFilter
262         openFilesPath = "D:/documents/pyMarksix/draw/"
263         files, ok = QFileDialog.getOpenFileNames(self,
264                                                  "QFileDialog.getOpenFileNames()",
265                                                  openFilesPath,
266                                                  "All Files (*);;Text Files (*.txt)")
267 
268         if len(files):
269             self.label_openFileNames.setText(", ".join(files))
270 
271     # 保存文件对话框 取文件名
272     def setSaveFileName(self):
273         # options = QFileDialog.Options(QFlag(fileDialogOptionsWidget.value()))
274         # selectedFilter
275         fileName, ok = QFileDialog.getSaveFileName(self,
276                                                    "QFileDialog.getSaveFileName()",
277                                                    self.label_saveFileName.text(),
278                                                    "All Files (*);;Text Files (*.txt)")
279         if fileName:
280             self.label_saveFileName.setText(fileName)
281 
282     def criticalMessage(self):
283         # reply = QMessageBox.StandardButton()
284         MESSAGE = "批评!"
285         reply = QMessageBox.critical(self,
286                                      "QMessageBox.critical()",
287                                      MESSAGE,
288                                      QMessageBox.Abort | QMessageBox.Retry | QMessageBox.Ignore)
289         if reply == QMessageBox.Abort:
290             self.label_critical.setText("Abort")
291         elif reply == QMessageBox.Retry:
292             self.label_critical.setText("Retry")
293         else:
294             self.label_critical.setText("Ignore")
295 
296     def informationMessage(self):
297         MESSAGE = "信息"
298         reply = QMessageBox.information(self, "QMessageBox.information()", MESSAGE)
299         if reply == QMessageBox.Ok:
300             self.label_information.setText("OK")
301         else:
302             self.label_information.setText("Escape")
303 
304     def questionMessage(self):
305         MESSAGE = "疑问"
306         reply = QMessageBox.question(self, "QMessageBox.question()",
307                                      MESSAGE,
308                                      QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)
309         if reply == QMessageBox.Yes:
310             self.label_question.setText("Yes")
311         elif reply == QMessageBox.No:
312             self.label_question.setText("No")
313         else:
314             self.label_question.setText("Cancel")
315 
316     def warningMessage(self):
317         MESSAGE = "警告文本"
318         msgBox = QMessageBox(QMessageBox.Warning,
319                              "QMessageBox.warning()",
320                              MESSAGE,
321                              QMessageBox.Retry | QMessageBox.Discard | QMessageBox.Cancel,
322                              self)
323         msgBox.setDetailedText("详细信息。。。")
324         # msgBox.addButton("Save &Again", QMessageBox.AcceptRole)
325         # msgBox.addButton("&Continue", QMessageBox.RejectRole)
326         if msgBox.exec() == QMessageBox.AcceptRole:
327             self.label_warning.setText("Retry")
328         else:
329             self.label_warning.setText("Abort")
330 
331     def errorMessage(self):
332         self.errorMessageDialog.showMessage(
333             "This dialog shows and remembers error messages. "
334             "If the checkbox is checked (as it is by default), "
335             "the shown message will be shown again, "
336             "but if the user unchecks the box the message "
337             "will not appear again if QErrorMessage.showMessage() "
338             "is called with the same message.")
339         self.label_error.setText("If the box is unchecked, the message "
340                                  "won't appear again.")
341 
342 
343 app = QApplication(sys.argv)
344 form = StandardDialog()
345 form.show()
346 app.exec_()
参考代码

相关文章:

  • 2021-09-28
  • 2022-12-23
  • 2022-01-29
  • 2021-09-16
  • 2022-12-23
  • 2021-10-21
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-12-07
  • 2021-08-04
  • 2022-12-23
  • 2018-04-25
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案