PyQt5学习

2018-12-01  本文已影响0人  初心安在

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()方法确保一个不留垃圾的退出。系统环境将会被通知应用是怎样被结束的。

上一篇 下一篇

猜你喜欢

热点阅读