代码:
1 #coding: utf-8 2 from PyQt4.QtGui import * 3 from PyQt4.QtCore import * 4 import sys 5 #设定 tr 方法使用 utf8 编码来解析文字 6 QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8")) 7 8 class StandardDialog(QDialog): 9 10 def __init__(self, parent=None):11 super(StandardDialog, self).__init__(parent)12 #设置程序标题13 self.setWindowTitle("Standard Dialog")14 #创建各个按钮控件15 filePushButton = QPushButton(self.tr("文件对话框"))16 colorPushButton = QPushButton(self.tr("颜色对话框"))17 fontPushButton = QPushButton(self.tr("字体对话框"))18 #创建一个QLineEdit类实例fileLineEdit,用来显示选择的文件名19 self.fileLineEdit = QLineEdit()20 #创建一个 QFrame 类例 colorFrame,当用户选择不同的颜色时,colorFrame 会根据用户选择的颜色更新其背景21 self.colorFrame = QFrame()22 self.colorFrame.setFrameShape(QFrame.Box)23 self.colorFrame.setAutoFillBackground(True)24 #创建一个 QLineEdit 类实例 fontLineEdit,当用户选择不同的字体时,fontLineEdit 会根据用户选择的字体更新其内容25 self.fontLineEdit = QLineEdit("Hello World!")26 #将各个控件进行布局27 layout = QGridLayout()28 layout.addWidget(filePushButton, 0, 0)29 layout.addWidget(self.fileLineEdit, 0, 1)30 layout.addWidget(colorPushButton, 1, 0)31 layout.addWidget(self.colorFrame, 1, 1)32 layout.addWidget(fontPushButton, 2, 0)33 layout.addWidget(self.fontLineEdit, 2, 1)34 35 self.setLayout(layout)36 #将各个按钮的 clicked 信号相应的槽进行连接37 self.connect(filePushButton, SIGNAL("clicked()"), self.openFile)38 self.connect(colorPushButton, SIGNAL("clicked()"), self.openColor)39 self.connect(fontPushButton, SIGNAL("clicked()"), self.openFont)40 41 def openFile(self):42 #getOpenFileName()是QFileDialog 类的一个静态方法,返回用户选择的文件名,如果用户选择取消,则返回一个空串43 s = QFileDialog.getOpenFileName(self, "Open file dialog", "/", "Python files(*.py)")44 self.fileLineEdit.setText(str(s))45 46 def openColor(self):47 #slotColor()函数是颜色对话框按钮 clicked 信号的槽。其中 getColor()是 QColorDialog 的一个静态函数,返回用户选择的颜色值48 c = QColorDialog.getColor(Qt.blue)49 if c.isValid():50 self.colorFrame.setPalette(QPalette(c))51 52 def openFont(self):53 54 f,ok = QFontDialog.getFont()55 if ok:56 self.fontLineEdit.setFont(f)57 58 app = QApplication(sys.argv)59 form = StandardDialog()60 form.show()61 app.exec_()
1.QFileDialog 类还提供了类似的其他静态函数,如下表,通过这些函数,用户可以方便地定制自己的文件对话框。
2.slotFont()函数是字体对话框按钮clicked信号的槽。其中getFont()是QFontDdialog的一个静态函数,返回用户选择的字体,函数形式如下:
(QFont, bool)getFont(QFont, QWidget, QString, FontDialogOptions)
(QFont, bool) getFont (QFont, QWidget, QString)
(QFont, bool) getFont (QFont, QWidget parent = None) (QFont, bool) getFont (QWidget parent = None)