天天看點

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