提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
P1 建立窗口并添加图标
1.1第一个窗口
#-*- coding=utf-8 -*-
import sys
from PyQt4 import QtGui
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
widget.resize(250,150)
widget.setWindowTitle("first window")
widget.show()
sys.exit(app.exec_())
app = QtGui.QApplication(sys.argv)
要创建Application。
2.
widget = QtGui.QWidget()
QWidget是PyQt4所有用户接口对象中的基础类库。QWidget是没有父对象的部件。
3.
widget.setWindowTitle("first window")
widget.setWindowTitle(),设置部件的标题。
4.
sys.exit(app.exec_())
在显示窗口后,进入程序的主循环,并且开始处理时间。主循环从窗口接收事件并对部件进行处理。
效果:
1.2 为左上角窗口添加一个小图案
#-*- coding=utf-8 -*-
import sys
from PyQt4 import QtGui
class Icon(QtGui.QWidget):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.setGeometry(300,300,250,150)
self.setWindowTitle("Ion")
self.setWindowIcon(QtGui.QIcon("mail.ico"))
app = QtGui.QApplication(sys.argv)
icon = icon()
icon.show()
sys.exit(app.exec_())
class Icon(QtGui.QWidget)
用面向对象的风格编写,这里继承了QtGui.QWidget。继承完这个类后,再与里面init操作,便是对其它部件的设置。
2.
self.setGeometry(a,b,c,d)
前两个参数是部件相对于父元素(这里是界面的父元素,故直接为相对于桌面的位置)的x,y坐标,后两个参数代表部件的宽和高
3.
self.setWindowicon(QtGui.Qion("a"))
设定应用的图标,创建了一个QtGui.Qion的对象,创建时的参数就是图标的路径。
P2.添加气泡小提示和可以关闭界面的按钮
2.1气泡小提示
#-*- coding=utf-8 -*-
import sys
from PyQt4 import QtGui
class ToolTip(QtGui.QWidget):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.setGeometry(300,300,250,150)
self.setWindowTitle("ToolTip")
self.setToolTip("This is a <b>QWidget</b>widget")
QtGui.QToolTip.setFont(QtGui.QFont("OldEnglish",10))
app = QtGui.QApplication(sys.argv)
tooltip = ToolTip()
tooltip.show()
sys.exit(app.exec_())
self.setToolTip("This is a <b>QWidget</b>widget")
用于创建一个提示框
2.
QtGui.QToolTip.setFont(QtGui.QFont("OldEnglish",10))
1:设置一个用来显示信息的字体 2:字体大小
效果:
2.2 关闭按钮
#-*- coding=utf-8 -*-
import sys
from PyQt4 import QtGui,QtCore
class Quitbutton(QtGui.QWidget):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.setGeometry(300,300,250,250)
self.setWindowTitle(u"lose window")
quit = QtGui.QPushButton(u"close",self)
quit.setGeometry(10,10,60,35)
self.connect(quit,QtCore.SIGNAL("clicked()"),QtGui.qApp,QtCore.SLOT("quit()"))
app = QtGui.QApplication(sys.argv)
quit = Quitbutton()
quit.show()
sys.exit(app.exec_())
quit = QtGui.QPushButton(u"close",self)
构建一个按钮。
2.
quit.setGeometry(10,10,60,35)
调整按钮相对于界面的位置
3.
self.connect(quit,QtCore.SIGNAL("clicked()"),QtGui.qApp,QtCore.SLOT("quit()"))
PyQt4中的事件处理系统是由信号槽机制实现的。
1:对应的刚刚设置的按钮(对象)
2:代表的是信号。QtCore.SIGNAL(“clicked()”):这里是“关闭”的信号
3:QtGui.qApp:代表了应用
4:槽函数,用于接收刚刚发送的信号。QtCore.SLOT(“quit()”)
如果点击了这个按钮,就会发出"clicked"这个信号,使应用关闭。
效果:
P3.弹出消息窗口、居中设置和设置状态栏
3.1弹出消息窗口
#-*- coding=utf-8 -*-
import sys
from PyQt4 import QtGui,QtCore
class MessageBox(QtGui.QWidget):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.setGeometry(300,300,350,250)
self.setWindowTitle(u"message window")
def closeEvent(self, event):
reply = QtGui.QMessageBox.question(self,u"warning",u"confirm to exit",QtGui.QMessageBox.Yes,QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore()
app = QtGui.QApplication(sys.argv)
qb = MessageBox()
qb.show()
sys.exit(app.exec_())
def closeEvent(self,event)
在界面中,当点击x号时,会触发一个事件,在pyqt中,对该事件有处理,即closeEvent,这里就可以进行改动。
2.
reply = QtGui.QMessageBox.question(self,u"warning",u"confirm to exit",QtGui.QMessageBox.Yes,QtGui.QMessageBox.No)
2:消息框的标题
3:消息框架的内容他
4:消息框的按钮组合
5.:消息框的默认按钮
if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore()
如果返回的是QtGui.QMessageBox.Yes,则事件执行(event.accept())。否则,忽略。
效果:
3.2居中设置
#-*- coding=utf-8 -*-
import sys
from PyQt4 import QtGui,QtCore
class MessageBox(QtGui.QWidget):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.setWindowTitle(u"status list")
self.resize(550,450)
self.center()
def center(self):
screen = QtGui.QDesktopWidget().screenGeometry()
size = self.geometry()
self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)
def closeEvent(self, event):
reply = QtGui.QMessageBox.question(self,u"warning",u"confirm to exit",QtGui.QMessageBox.Yes,QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore()
app = QtGui.QApplication(sys.argv)
qb = MessageBox()
qb.show()
sys.exit(app.exec_())
screen = QtGui.QDesktopWidget().screenGeometry()
得到屏幕的分辨率
2.
size = self.geometry()
得到窗口的大小
3.
self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)
移动窗口到指定位置
3.3设置状态栏
#-*- coding=utf-8 -*-
import sys
from PyQt4 import QtGui,QtCore
class MessageBox(QtGui.QMainWindow):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.setWindowTitle(u"statu list")
self.resize(350,250)
self.statusBar().showMessage(u"i am statu list")
app = QtGui.QApplication(sys.argv)
qb = MessageBox()
qb.show()
sys.exit(app.exec_())
class MessageBox(QtGui.QMainWindow):
继承的是QMainWindow这个类!
2.
self.statusBar().showMessage(u"i am statu list")
设置状态栏中的信息
效果: