• 《转》PyQt4 精彩实例分析* 实例2 标准对话框的使用


    和大多数操作系统一样,Windows及Linux都提供了一系列的标准对话框,如文件选择,字体选择,颜色选择等,这些标准对话框为应用程序提供了一致的观感。Qt对这些标准对话框都定义了相关的类。这些类让使用者可以非常方便地使用标准对话框进行文件,颜色以及字体的选择。标准对话框在软件设计过程中是常常须要使用的。

    Qt提供的标准对话框除了本实例提到的,还有QErrorMessage。QInputDialog。QMessageBox,QPrintDialog,QProcessDialog等,这些标准对话框的使用在本书的兴许部分将会陆续介绍。

    本实例主要演示上面几种标准对话框的使用,例如以下图所看到的


    在上图中,单击“文件对话框”button,会弹出文件选择对话框,选中的文件名称将显示在右连。单击“颜色对话框”button,会弹出颜色选择对话框,选中的颜色将显示在右边,单击“字体对话框”button。会弹出字体选择对话框,选中的字体将更新右边显示的字符串。

    实现代码例如以下:

    1. # -*- coding: utf-8 -*-     
    2. from PyQt4.QtGui import *    
    3. from PyQt4.QtCore import *    
    4. import sys    
    5.     
    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.     
    19.         self.fileLineEdit=QLineEdit()    
    20.         self.colorFrame=QFrame()    
    21.         self.colorFrame.setFrameShape(QFrame.Box)    
    22.         self.colorFrame.setAutoFillBackground(True)    
    23.         self.fontLineEdit=QLineEdit("Hello World!")    
    24.     
    25.         layout=QGridLayout()    
    26.         layout.addWidget(filePushButton,0,0)    
    27.         layout.addWidget(self.fileLineEdit,0,1)    
    28.         layout.addWidget(colorPushButton,1,0)    
    29.         layout.addWidget(self.colorFrame,1,1)    
    30.         layout.addWidget(fontPushButton,2,0)    
    31.         layout.addWidget(self.fontLineEdit,2,1)    
    32.     
    33.         self.setLayout(layout)    
    34.     
    35.         self.connect(filePushButton,SIGNAL("clicked()"),self.openFile)    
    36.         self.connect(colorPushButton,SIGNAL("clicked()"),self.openColor)    
    37.         self.connect(fontPushButton,SIGNAL("clicked()"),self.openFont)    
    38.     
    39.     def openFile(self):    
    40.             
    41.         s=QFileDialog.getOpenFileName(self,"Open file dialog","/","Python files(*.py)")    
    42.         self.fileLineEdit.setText(str(s))    
    43.     
    44.     def openColor(self):    
    45.     
    46.         c=QColorDialog.getColor(Qt.blue)    
    47.         if c.isValid():    
    48.             self.colorFrame.setPalette(QPalette(c))    
    49.     
    50.     def openFont(self):    
    51.        
    52.         f,ok=QFontDialog.getFont()    
    53.         if ok:    
    54.             self.fontLineEdit.setFont(f)    
    55.     
    56. app=QApplication(sys.argv)    
    57. form=StandardDialog()    
    58. form.show()    
    59. app.exec_()    

    第6行设定tr方法使用utf8编码来解析文字。

    第13行设置程序的标题。

    第15到17行创建各个button控件。

    第19行创建一个QLineEdit类实例fileLineEdit。用来显示选择的文件名称。

    第20行创建一个QFrame类实例colorFrame,当用户选择不同的颜色时,colorFrame会依据用户选择的颜色更新其背景。

    第23行创建一个QLineEdit类实例fontLineEdit,当用户选择不同的字体时,fontLineEdit会依据用户选择的字体更新其内容。

    第25到33行将各个控件进行布局。

    第35到37行将各个button的clicked信号对应的槽进行连接。

    openFile()方法是文件对话框button的clicked信号的槽。当中getOpenFileName()是QFileDialog类的一个静态方法,返回用户选择的文件名称。假设用户选择取消,则返回一个空串。

    函数形式例如以下:

    QString getOpenFileName (QWidget parent = None, QString caption = QString(), QString directory = QString(), QString filter = QString(), Options options = 0)
    QString getOpenFileName (QWidget parent = None, QString caption = QString(), QString directory = QString(), QString filter = QString(), QString selectedFilter = None, Options options = 0)

    调用getOpenFileName()函数将创建一个模态的文件对话框,例如以下图所看到的。

    directory參数指定了默认的文件夹。假设directory參数带有文件名称,则该文件将是默认选中的文件。filter參数对文件类型进行过滤,仅仅有与过滤器匹配的文件类型才显示。filter能够同一时候指定多种过滤方式供用户选择。多种过滤器之间用";;"隔开。用户选择的过滤器通过參数selectedFilter 返回。


    QFileDialog类还提供了类似的其它静态函数,例如以下表。通过这些函数。用户能够方便地定制自己的文件对话框。

    静态函数 说明
    getOpenFileName 获得用户选择的文件名称
    getSaveFileName 获得用户保存的文件名称
    getExistingDirectory 获得用户选择的已存在的文件夹名
    getOpenFileNames 获得用户选择的文件名称列表
    做一个 选择路径界面,文件类型不显示,就选择路径

    使用 getExistingDirectory就能够了 


    openColor()函数是颜色对话框buttonclicked信号的槽。当中getColor()是QColorDialog的一个静态函数,返回用户选择的颜色值,函数形式例如以下:

    QColor QColorDialog.getColor (QColor initial = Qt.white, QWidget parent = None)

    QColor QColorDialog.getColor (QColor, QWidget, QString, ColorDialogOptions options = 0)

    调用getColor()函数将创建一个模态的颜色对话框,例如以下图所看到的。initial參数指定了默认的颜色。默觉得白色,通过isValid()能够推断用户选择的颜色是否有效,若用户选择取消。isValid()将返回false。



    openFont()函数是字体对话框buttonclicked信号的槽。当中getFont()是QFontDialog的一个静态函数。返回用户选择的字体,函数形式例如以下:

    (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)

    调用getFont()函数将创建一个模态的字体对话框。例如以下图所看到的。

    用户选择OK,函数返回(用户选择的字体,True),否则返回(默认字体,False)



  • 相关阅读:
    python网络编程,requests模块
    python操作excel
    python加密模块hashlib
    python操作redis
    python操作mysql
    python常用模块3(os和sys模块)
    python打开网站
    python常用模块2
    python模块简介
    mac下开发——环境心得(杂项,持续性更新)
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6820831.html
Copyright © 2020-2023  润新知