PyQt 学习笔记1——自定义窗口框架

  自定义一个属于自己的窗口,初始化时自动设置好在屏幕中央显示,重写退出事件的触发器 closeEvent(),并增加了设置图标,简化设置标题的函数名,其它类可以继承它:

 1 # -*- coding: utf-8 -*-
 2 
 3 import time
 4 import sys
 5 from PyQt4 import QtGui, QtCore
 6 
 7 
 8 class MyQwidget(QtGui.QWidget):
 9 
10     def __init__(self, title=None, icon=None):
11         QtGui.QWidget.__init__(self)
12         self.setGeometry(300, 200, 600, 500)
13         self.center()
14         self.setTitle(title)
15         self.setIcon(icon)
16 
17     def setTitle(self, title=None):
18         if title != None:
19             self.setWindowTitle(title)
20 
21     def setIcon(self, icon=None):
22         if icon != None:
23             self.setWindowIcon(QtGui.QIcon(icon))
24 
25     def resize(self, width, height):
26         QtGui.QWidget.resize(self, width, height)
27         self.center()
28 
29     def center(self):
30         screen = QtGui.QDesktopWidget().screenGeometry()
31         size = self.geometry()
32         self.move((screen.width() - size.width()) / 2,
33                   (screen.height() - size.height()) / 2)
34 
35     def closeEvent(self, event):
36         reply = QtGui.QMessageBox.question(
37             self, 'Message', 'Are you sure to close?', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
38         if reply == QtGui.QMessageBox.Yes:
39             event.accept()
40         else:
41             event.ignore()
42 
43 
44 class Widget2(MyQwidget):
45     pass
46 
47 
48 class MainWindow(QtGui.QMainWindow, MyQwidget):
49 
50     def __init__(self, parent=None):
51         QtGui.QMainWindow.__init__(self)
52         self.resize(300, 200)
53         self.setTitle('statusbar')
54         self.statusBar().showMessage('Ready')
55 
56 
57 app = QtGui.QApplication(sys.argv)
58 
59 w1 = Widget2(icon='image\\RK.gif', title='MyQwidget')
60 w1.show()
61 
62 w2 = Widget2()
63 w2.setTitle('hehe')
64 w2.setIcon('image\\fire.gif')
65 w2.resize(400, 300)
66 w2.show()
67 
68 w3 = MainWindow()
69 w3.show()
70 
71 sys.exit(app.exec_())
View Code

  运行后截图如下:(均处于整个屏幕的中央)

 

posted @ 2015-07-11 00:32  Newdawn_ALM  阅读(712)  评论(0编辑  收藏  举报