1.http://www.cnblogs.com/archisama/p/5444032.html
https://blog.csdn.net/zd0303/article/details/50261481
http://blog.sina.com.cn/yjcx2010
import sys
from PyQt5.QtWidgets import QWidget,QApplication,QMessageBox,QPushButton,QToolTip,QDesktopWidget
from PyQt5.QtGui import QFont
from PyQt5.QtCore import QCoreApplication
#定义一个类
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
#定义初始化函数
def initUI(self):
QToolTip.setFont(QFont('SansSerif', 10))
self.setWindowTitle("Hello Qt")
self.setGeometry(400,250,300,300)
self.setToolTip("这是一个对话框")
self.center()
btn=QPushButton("Button",self)
btn.setGeometry(30,30,80,30)
btn.setToolTip("这是一个按键")
#链接信号与槽 关闭窗口
btn.clicked.connect(QCoreApplication.instance().quit)
self.show()
#关闭事件
def closeEvent(self, event):
reply = QMessageBox.warning(self,"Message","are you sure to quit?",QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
if reply==QMessageBox.Yes:
event.accept()
else:
event.ignore()
#居中显示
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
#主函数
if __name__=="__main__":
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec())
3.计算器
import sys
from PyQt5 import QtWidgets
class Form(QtWidgets.QDialog):
def __init__(self):
super().__init__()
self.browser = QtWidgets.QTextBrowser()
self.line_edit = QtWidgets.QLineEdit()
#文本编辑控件,选中所有文本并聚焦,设置事件监听
self.line_edit.selectAll()
self.line_edit.setFocus()
self.line_edit.returnPressed.connect(self.update_ui)
#垂直布局,并将两个控价加入到布局中
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.browser)
layout.addWidget(self.line_edit)
#设置本窗体的布局
self.setLayout(layout)
self.setWindowTitle('Calculate')
def update_ui(self):
try:
expression = self.line_edit.text()
self.browser.append('%s = <b>%s</b>' % (expression, eval(expression)))
except:
self.browser.append('<font color=red>%s is invaild !</font>'%expression)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
form = Form()
form.show()
sys.exit(app.exec_())
4.PyQt基础
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QMessageBox
from PyQt5.QtCore import QCoreApplication
#这里我们进行了一些必要模块的导入。最基础的widget组件位于PyQt5.QtWidget模块中
class Example(QWidget):
def __init__(self):
super().__init__()
# 在面向对象编程中有三个重要的东西,分别是类,数据和方法。
# 这里我们创建了一个新类叫做Example。Example类继承自QWidget类。
# 这意味着我们调用了两个构造方法:第一个是Example类的构造方法,
# 第二个是被继承类的构造方法。super()方法返回了Example类的父类对象,
# 并且我们调用了父类的构造方法。__init__()方法是Python语言中的构造方法。
self.initUI()
#GUI的创建授予initUI()方法完成。
def initUI(self):
self.setGeometry(100,200,200,400)
#相当于resize()和move()
btn=QPushButton("quit",self)
btn.clicked.connect(QCoreApplication.instance().quit)
#在PyQt5中,事件处理系统由信号&槽机制建立。
# 如果我们点击了按钮,信号clicked被发送。
# 槽可以是Qt内置的槽或Python 的一个方法调用。
# QCoreApplication类包含了主事件循环;它处理和转发所有事件。
# instance()方法给我们返回一个实例化对象。注意QCoreAppli类由QApplication创建。
# 点击信号连接到quit()方法,将结束应用。
# 事件通信在两个对象之间进行:发送者和接受者。发送者是按钮,接受者是应用对象。
btn.resize(btn.sizeHint())
#调整大小
btn.move(50,100)
#显示位置
self.show()
#show()方法在屏幕上显示出widget。
# 一个widget对象在这里第一次被在内存中创建,并且之后在屏幕上显示。
def closeEvent(self,event):
reply=QMessageBox.question(self,'Message',"are you sure to quit",
QMessageBox.Yes|QMessageBox.No,QMessageBox.No)
#我们现实一个带两个按钮的message box:YES和No按钮。
# 代码中第一个字符串的内容被显示在标题栏上。
# 第二个字符串是对话框上显示的文本。第三个参数指定了显示在对话框上的按钮集合。
# 最后一个参数是默认选中的按钮。这个按钮一开始就获得焦点。
# 返回值被储存在reply变量中。
if reply==QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app=QApplication(sys.argv)
#所有的PyQt5应用必须创建一个应用(Application)对象。
# sys.argv参数是一个来自命令行的参数列表。Python脚本可以在shell中运行。
# 这是我们用来控制我们应用启动的一种方法。
e=Example()
sys.exit(app.exec_())
#最后,应用进入主循环。在这个地方,事件处理开始执行。
# 主循环用于接收来自窗口触发的事件,并且转发他们到widget应用上处理。
# 如果我们调用exit()方法或主widget组件被销毁,主循环将退出。
# sys.exit()方法确保一个不留垃圾的退出。系统环境将会被通知应用是怎样被结束的。