天天看点

python pyqt4 学习(1)

由于用的python版本为2.7,故选用pyqt4

下载地址 点我传送PyQt4最新版本

安装只需一路 Next

本人也刚刚开始接触,还是在用代码编写,没有使用Qt Designer

推荐参考文档:

PyQt4 精彩实例分析26个例子
PyQt4 精彩实例分析教程
PyQt4 零基础学Qt4编程
PyQt4_精彩实例分析(语法高亮带书签)
PyQt4入门指南 PDF中文版
PyQt学习笔记
           

下面为代码

#coding:utf-8

'''
FuncName: PyQt4_simple.py
Desc: GUI for python
Date: 2016-04-25 14:30
Author: johnny
'''

import sys,os
from PyQt4 import QtGui
from PyQt4 import QtCore

class PyQt_test(QtGui.QMainWindow,QtGui.QWidget):
    def __init__(self):                                     # 初始化
        QtGui.QWidget.__init__(self)                        # 建议用super
        QtGui.QMainWindow.__init__(self)

        self.setWindowTitle('Functional testing tools')    # 设置窗口标题
        self.setWindowIcon(QtGui.QIcon("head.ico"))        # 设置窗口图标,ico格式,路径自己更改吧
        self.resize(, )                              # 设置窗体 宽和高
        self.center()                                      # 下面为引用以下函数
        self.base_button()
        self.shortcut_key()
        self.ProgressBar()
        self.version()

    def center(self):                                      # 使窗口居中
        screen = QtGui.QDesktopWidget().screenGeometry()   # 计算桌面分辨率
        size =  self.geometry()                            # 获得 QWidget 的尺寸
        self.move((screen.width()-size.width())/, (screen.height()-size.height())/)                                                     # 把窗口移动到屏幕中央

    def closeEvent(self, event):                           # 点击关闭弹出提示窗
        reply = QtGui.QMessageBox.question(self, 'Message',
            "Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

        if reply == QtGui.QMessageBox.Yes:
            event.accept()                                 # 接受及退出
        else: 
            event.ignore()                                 # 反对即保持现状

    def base_button(self):                                 # 配置按钮
        OpenConfig = QtGui.QPushButton(u'输出网址', self)   # 按钮名称
        OpenConfig.setGeometry(, , , )            # 按钮位置
        self.connect(OpenConfig, QtCore.SIGNAL('clicked()'), self.Open_Config)  #按钮触发事件

        OpenResult = QtGui.QPushButton(u'输出作者', self)   
        OpenResult.setGeometry(, , , )
        self.connect(OpenResult, QtCore.SIGNAL('clicked()'), self.Start_Test)

    def shortcut_key(self):                                # 设置快捷键
        open_config = QtGui.QAction(u'输出网址',self)
        open_config.setShortcut('Ctrl+E')                  # 快捷键,英文半角状态下使用快捷键
        open_config.setStatusTip('Open config.ini')        # 显示文字
        self.connect(open_config, QtCore.SIGNAL('triggered()'),self.Open_Config)             # 触发事件

        start_test = QtGui.QAction(u'输出作者',self)
        start_test.setShortcut('Ctrl+T')                   # 快捷键
        start_test.setStatusTip('Start application')
        self.connect(start_test, QtCore.SIGNAL('triggered()'),self.Start_Test)

        exit = QtGui.QAction(u'退出',self)
        exit.setShortcut('Ctrl+Q')                         # 快捷键
        exit.setStatusTip('Start application')
        self.connect(exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))

        menubar = self.menuBar()                           # 设置下拉菜单
        self.file = menubar.addMenu(u'&快捷键查询')
        self.file.addAction(open_config)                   # 添加Action
        self.file.addAction(start_test)
        self.file.addAction(exit)


    def Open_Config( self ):                               # 按钮操作
        print u'更多精彩尽在  http://blog.csdn.net/z_johnny' # 点击按钮输出

    def Start_Test( self ):                                # 按钮操作
        print u"Johnny's Lab"                              # 自己更改按钮功能

    def version(self):                                     # 设置标题为版本信息,简单
        self.cb = QtGui.QCheckBox(u'显示版本信息', self)
        self.cb.setChecked(False)                          # 复选框默认为空
        self.cb.setFocusPolicy(QtCore.Qt.NoFocus)
        self.cb.move(,)
        self.connect(self.cb, QtCore.SIGNAL('stateChanged(int)'),
            self.changeTitle)

    def changeTitle(self, value):                          # 点击复选框显示
        if self.cb.isChecked():
            self.setWindowTitle(u'版本号:V1.0 by Johnny ')
        else:
            self.setWindowTitle('Functional testing tools')

    def ProgressBar(self):                                 # 进度条

        self.pbar = QtGui.QProgressBar(self)               # 构建 QProgressBar 
        self.pbar.setGeometry(, , , )

        self.button = QtGui.QPushButton('Start', self)
        self.button.setFocusPolicy(QtCore.Qt.NoFocus)
        self.button.move(, )

        self.connect(self.button, QtCore.SIGNAL('clicked()'),
            self.doAction)

        self.timer = QtCore.QBasicTimer()
        self.step = 

    def timerEvent(self, event):                           # 加载定时器事件
        if self.step >= :
            self.timer.stop()
            return

        self.step = self.step + 
        self.pbar.setValue(self.step)

    def doAction(self):
        if self.timer.isActive():
            self.timer.stop()
            self.button.setText('Start')
        else:
            self.timer.start(, self)                   # 定时器对象激活进度条
            self.button.setText('Stop')

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    GUI = PyQt_test()                                     # 实例化
    GUI.show()
    sys.exit(app.exec_())