В PyQt4 есть два вида диалогов: предопределенные и пользовательские.
QInputDialog представляет простой диалог для получения единственного значения от пользователя. Значение может быть строкой, числом или пунктом из списка.
На форме располагаются кнопка и строка ввода. При нажатии на кнопку открывается диалог ввода для получения текстового значения. Введенный текст будет отображен в строке ввода.
Это строка отображает диалог ввода. Первая строка это заголовок диалога, вторая — текст сообщения. Диалог возвращает введенный текст и логическое значение. Если мы нажмем кнопку OK, логическое значение будет true, в противном случае false.

QColorDialog предоставляет диалог для выбора цветов.
В этом примере на форме находятся кнопка (QPushButton) и QWidget. Фон виджета закрашен черным цветом. Используя QColorDialog мы можем изменить его фон на указанный нами цвет.
Эта строка открывает QColorDialog.
Мы изменяем цвет фона используя таблицу стилей.

QFontDialog предоставляет диалог для выбора шрифта.
В нашем примере, мы расположили на форме QPushButton и QLabel. С помощь QFontDialog мы изменили шрифт QLabel.
Мы сделали QLabel с изменяемым размером. Это необходимо, потому как используя различные шрифты текст может становиться больше и надпись может стать не полностью видима.
Здесь мы открываем диалог выбора шрифтов.
Если мы щелкнем по кнопке OK, то шрифт QLabel изменится.

QFileDialog это диалог, который позволяет пользователям выбирать файлы или папки. Файлы могут быть указаны как для сохранинения так и для открытия.
В этом примере на форме расположена панель меню, QTextEdit и строка статуса. Пункт меню позволяет открыть диалог выбора файлов. Содержимое выбранного файла загружается в QTextEdit. Строка статуса показана исключительно в целях красоты:)
Этот пример основан на QMainWindow, потому как мы заполнили QTextEdit центр формы. Это легко проделать с помощью QMainWindow без обращения к раскладкам (layouts).
Мы открываем диалог QFileDialog. Второй параметр в методе getOpenFileName это заголовок окна. Третий указывает начальный каталог. Фильтр файлов по умолчанию установлен во All files (*).
Содержимое выбранного файла прочитывается и заполняет QTextEdit.

.
Предопределенные диалоги
QInputDialog
QInputDialog представляет простой диалог для получения единственного значения от пользователя. Значение может быть строкой, числом или пунктом из списка.
#!/usr/bin/python
# inputdialog.py
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class InputDialog(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(300, 300, 350, 80)
self.setWindowTitle('InputDialog')
self.button = QtGui.QPushButton('Dialog', self)
self.button.setFocusPolicy(QtCore.Qt.NoFocus)
self.button.move(20, 20)
self.connect(self.button, QtCore.SIGNAL('clicked()'), self.showDialog)
self.setFocus()
self.label = QtGui.QLineEdit(self)
self.label.move(130, 22)
def showDialog(self):
text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog', 'Enter your name:')
if ok:
self.label.setText(unicode(text))
app = QtGui.QApplication(sys.argv)
icon = InputDialog()
icon.show()
app.exec_()
На форме располагаются кнопка и строка ввода. При нажатии на кнопку открывается диалог ввода для получения текстового значения. Введенный текст будет отображен в строке ввода.
text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog', 'Enter your name:')
Это строка отображает диалог ввода. Первая строка это заголовок диалога, вторая — текст сообщения. Диалог возвращает введенный текст и логическое значение. Если мы нажмем кнопку OK, логическое значение будет true, в противном случае false.

QColorDialog
QColorDialog предоставляет диалог для выбора цветов.
#!/usr/bin/python
# colordialog.py
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class ColorDialog(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
color = QtGui.QColor(0, 0, 0)
self.setGeometry(300, 300, 250, 180)
self.setWindowTitle('ColorDialog')
self.button = QtGui.QPushButton('Dialog', self)
self.button.setFocusPolicy(QtCore.Qt.NoFocus)
self.button.move(20, 20)
self.connect(self.button, QtCore.SIGNAL('clicked()'), self.showDialog)
self.setFocus()
self.widget = QtGui.QWidget(self)
self.widget.setStyleSheet("QWidget { background-color: %s }" % color.name())
self.widget.setGeometry(130, 22, 100, 100)
def showDialog(self):
color = QtGui.QColorDialog.getColor()
self.widget.setStyleSheet("QWidget { background-color: %s }" % color.name())
app = QtGui.QApplication(sys.argv)
cd = ColorDialog()
cd.show()
app.exec_()
В этом примере на форме находятся кнопка (QPushButton) и QWidget. Фон виджета закрашен черным цветом. Используя QColorDialog мы можем изменить его фон на указанный нами цвет.
color = QtGui.QColorDialog.getColor()
Эта строка открывает QColorDialog.
self.widget.setStyleSheet("QWidget { background-color: %s }" % color.name())
Мы изменяем цвет фона используя таблицу стилей.

QFontDialog
QFontDialog предоставляет диалог для выбора шрифта.
#!/usr/bin/python
# fontdialog.py
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class FontDialog(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
hbox = QtGui.QHBoxLayout()
self.setGeometry(300, 300, 250, 110)
self.setWindowTitle('FontDialog')
button = QtGui.QPushButton('Dialog', self)
button.setFocusPolicy(QtCore.Qt.NoFocus)
button.move(20, 20)
hbox.addWidget(button)
self.connect(button, QtCore.SIGNAL('clicked()'), self.showDialog)
self.label = QtGui.QLabel('Knowledge only matters', self)
self.label.move(130, 20)
hbox.addWidget(self.label, 1)
self.setLayout(hbox)
def showDialog(self):
font, ok = QtGui.QFontDialog.getFont()
if ok:
self.label.setFont(font)
app = QtGui.QApplication(sys.argv)
cd = FontDialog()
cd.show()
app.exec_()
В нашем примере, мы расположили на форме QPushButton и QLabel. С помощь QFontDialog мы изменили шрифт QLabel.
hbox.addWidget(self.label, 1)
Мы сделали QLabel с изменяемым размером. Это необходимо, потому как используя различные шрифты текст может становиться больше и надпись может стать не полностью видима.
font, ok = QtGui.QFontDialog.getFont()
Здесь мы открываем диалог выбора шрифтов.
if ok:
self.label.setFont(font)
Если мы щелкнем по кнопке OK, то шрифт QLabel изменится.

QFileDialog
QFileDialog это диалог, который позволяет пользователям выбирать файлы или папки. Файлы могут быть указаны как для сохранинения так и для открытия.
#!/usr/bin/python
# openfiledialog.py
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class OpenFile(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setGeometry(300, 300, 350, 300)
self.setWindowTitle('OpenFile')
self.textEdit = QtGui.QTextEdit()
self.setCentralWidget(self.textEdit)
self.statusBar()
self.setFocus()
exit = QtGui.QAction(QtGui.QIcon('open.png'), 'Open', self)
exit.setShortcut('Ctrl+O')
exit.setStatusTip('Open new File')
self.connect(exit, QtCore.SIGNAL('triggered()'), self.showDialog)
menubar = self.menuBar()
file = menubar.addMenu('&File')
file.addAction(exit)
def showDialog(self):
filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '/home')
file=open(filename)
data = file.read()
self.textEdit.setText(data)
app = QtGui.QApplication(sys.argv)
cd = OpenFile()
cd.show()
app.exec_()
В этом примере на форме расположена панель меню, QTextEdit и строка статуса. Пункт меню позволяет открыть диалог выбора файлов. Содержимое выбранного файла загружается в QTextEdit. Строка статуса показана исключительно в целях красоты:)
class OpenFile(QtGui.QMainWindow):
...
self.textEdit = QtGui.QTextEdit()
self.setCentralWidget(self.textEdit)
Этот пример основан на QMainWindow, потому как мы заполнили QTextEdit центр формы. Это легко проделать с помощью QMainWindow без обращения к раскладкам (layouts).
filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '/home')
Мы открываем диалог QFileDialog. Второй параметр в методе getOpenFileName это заголовок окна. Третий указывает начальный каталог. Фильтр файлов по умолчанию установлен во All files (*).
file=open(filename)
data = file.read()
self.textEdit.setText(data)
Содержимое выбранного файла прочитывается и заполняет QTextEdit.

.