PyQt学习之路

PyQt简单的图形界面、布局(显示文本,按钮等)

 

1. 显示文本

import sys
from PyQt5.QtWidgets import QApplication,QLabel #从pyqt5容器中引入文本标签

if __name__ == '__main__':
    app = QApplication(sys.argv)    #实例化应用,sys.argv中间是一点
    label = QLabel('Hello World!')     #实例化文本标签
    label.show()    #显示标签
    sys.exit(app.exec_())

2. 显示文本和按钮

import sys
from PyQt5.QtWidgets import QApplication,QLabel,QPushButton #从pyqt5容器中引入文本标签和按钮

if __name__ == '__main__':
    app = QApplication(sys.argv)    #实例化应用,sys.argv中间是一点
    btn = QPushButton('I am button') #实例化按钮
    label = QLabel('I am label')     #实例化文本标签
    btn.show()      #显示按钮
    label.show()    #显示标签
    sys.exit(app.exec_())

3. 封装成类

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel #从pyqt5容器中引入文本标签

#封装成类
class Wenben(QWidget):
    def __init__(self):     #初始化QWidget本身
        super(Wenben,self).__init__()   #super() 函数是用于调用父类(超类)的一个方法。Wenben调用其父类QWidget
        self.label = QLabel('I am Label!',self)

if __name__ == '__main__':
    app = QApplication(sys.argv)    #实例化应用,sys.argv中间是一点
    wenben = Wenben()   #实例化文本
    wenben.show()   #显示文本
    sys.exit(app.exec_())

4. 使用move函数定位布局(使用move布局是固定位置的,不会随窗口大小而改变)

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QPushButton #从pyqt5容器中引入文本标签,按钮

#封装成类
class Wenben(QWidget):
    def __init__(self):     #初始化QWidget本身
        super(Wenben,self).__init__()   #super() 函数是用于调用父类(超类)的一个方法。Wenben调用其父类QWidget
        self.label = QLabel('I am Label!',self)
        self.btn = QPushButton('I am button',self)

        self.label.move(20,20)  #使用move定位
        self.btn.move(20,60)     #使用move定位

if __name__ == '__main__':
    app = QApplication(sys.argv)    #实例化应用,sys.argv中间是一点
    wenben = Wenben()   #实例化文本
    wenben.show()   #显示文本
    sys.exit(app.exec_())

5. 使用QVBoxLayout进行垂直布局(使用布局容器进行布局,控件大小随窗体大小而改变)

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QPushButton,QVBoxLayout #从pyqt5容器中引入文本标签,按钮

#封装成类
class BuJu(QWidget):
    def __init__(self):     #初始化QWidget本身
        super(BuJu,self).__init__()   #super() 函数是用于调用父类(超类)的一个方法。Wenben调用其父类QWidget
        self.username = QLabel('用户名',self)
        self.psw = QLabel('密码',self)

        #使用QVBoxLayout
        self.vLayout = QVBoxLayout()    #定义一个布局
        self.vLayout.addWidget(self.username)   #往布局里添加元素
        self.vLayout.addWidget(self.psw)    #往布局里添加元素
        self.setLayout(self.vLayout)        #使布局生效

if __name__ == '__main__':
    app = QApplication(sys.argv)    #实例化应用,sys.argv中间是一点
    buju = BuJu()   #实例化
    buju.show()   #显示内容
    sys.exit(app.exec_())

6.使用QHBoxLayout进行水平布局(使用布局容器进行布局,控件大小随窗体大小而改变)

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QLineEdit,QHBoxLayout #从pyqt5容器中引入文本标签,按钮

#封装成类
class BuJu(QWidget):
    def __init__(self):     #初始化QWidget本身
        super(BuJu,self).__init__()   #super() 函数是用于调用父类(超类)的一个方法。Wenben调用其父类QWidget
        self.username = QLabel('用户名',self)
        self.usernameEdit = QLineEdit(self)

        #使用QHBoxLayout
        self.hLayout = QHBoxLayout()
        self.hLayout.addWidget(self.username)
        self.hLayout.addWidget(self.usernameEdit)
        self.setLayout(self.hLayout)

if __name__ == '__main__':
    app = QApplication(sys.argv)    #实例化应用,sys.argv中间是一点
    buju = BuJu()   #实例化
    buju.show()   #显示内容
    sys.exit(app.exec_())

7.使用QVBoxLayout和QHBoxLayout进行综合布局/嵌套布局(使用布局容器进行布局,控件大小随窗体大小而改变)

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QLineEdit,QVBoxLayout,QHBoxLayout #从pyqt5容器中引入文本标签,按钮

#封装成类
class BuJu(QWidget):
    def __init__(self):     #初始化QWidget本身
        super(BuJu,self).__init__()   #super() 函数是用于调用父类(超类)的一个方法。Wenben调用其父类QWidget
        self.username = QLabel('用户名',self)
        self.psw = QLabel('密  码',self)
        self.usernameEdit = QLineEdit(self)
        self.pswEdit = QLineEdit(self)

        #使用QHBoxLayout
        self.hLayout = QHBoxLayout()
        self.hLayout.addWidget(self.username)
        self.hLayout.addWidget(self.usernameEdit)

        self.hLayout2 = QHBoxLayout()
        self.hLayout2.addWidget(self.psw)
        self.hLayout2.addWidget(self.pswEdit)

        # 使用QVBoxLayout
        self.vLayout = QVBoxLayout()    #定义一个垂直布局
        self.vLayout.addLayout(self.hLayout)   #往垂直布局里添加元素
        self.vLayout.addLayout(self.hLayout2)    #往垂直布局里添加元素
        self.setLayout(self.vLayout)        #使垂直布局生效

if __name__ == '__main__':
    app = QApplication(sys.argv)    #实例化应用,sys.argv中间是一点
    buju = BuJu()   #实例化
    buju.show()   #显示内容
    sys.exit(app.exec_())

8. 制作登录框(布局,信号与槽)

PyQt学习之路_第1张图片

      直接贴代码

import sys
from PyQt5.QtCore import*
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QLineEdit,QPushButton,QVBoxLayout,QHBoxLayout #从pyqt5容器中引入文本标签,按钮

#封装成类
class BuJu(QWidget):
    def __init__(self):     #初始化QWidget本身
        super(BuJu,self).__init__()   #super() 函数是用于调用父类(超类)的一个方法。Wenben调用其父类QWidget
        self.setWindowTitle('登录框')
        self.username = QLabel('用户名',self)
        self.psw = QLabel('密  码',self)
        self.usernameEdit = QLineEdit(self)
        self.pswEdit = QLineEdit(self)
        self.pswEdit.setEchoMode(QLineEdit.Password)# 设置输入密码为圆点
        self.loginBtn = QPushButton('登 录',self)
        self.exitBtn = QPushButton('关 闭',self)

        #使用QHBoxLayout
        self.hLayout = QHBoxLayout()
        self.hLayout.addWidget(self.username)
        self.hLayout.addWidget(self.usernameEdit)

        self.hLayout2 = QHBoxLayout()
        self.hLayout2.addWidget(self.psw)
        self.hLayout2.addWidget(self.pswEdit)

        self.hLayout3 = QHBoxLayout()
        self.hLayout3.addWidget(self.loginBtn)
        self.hLayout3.addWidget(self.exitBtn)

        # 使用QVBoxLayout
        self.vLayout = QVBoxLayout()    #定义一个垂直布局
        self.vLayout.addLayout(self.hLayout)   #往垂直布局里添加元素
        self.vLayout.addLayout(self.hLayout2)    #往垂直布局里添加元素
        self.vLayout.addLayout(self.hLayout3)  # 往垂直布局里添加元素
        self.setLayout(self.vLayout)        #使垂直布局生效

        #信号
        self.loginBtn.clicked.connect(lambda:self.login())
        self.exitBtn.clicked.connect(QCoreApplication.quit)     #文件头需要引用from PyQt5.QtCore import*

    #槽函数
    def login(self):
        print("你的用户名是:"+self.usernameEdit.text())
        print("你的密码是:" + self.pswEdit.text())

if __name__ == '__main__':
    app = QApplication(sys.argv)    #实例化应用,sys.argv中间是一点
    buju = BuJu()   #实例化
    buju.show()   #显示内容
    sys.exit(app.exec_())

9. 将python程序打包成exe

下载安装pyinstaller

在pip目录执行 pip install pyinstaller 命令即可(请将pip设置为环境变量)

PyQt学习之路_第2张图片

在python工程项目目录打开命令窗口,运行命令 pyinstaller -F -w -i image.ico test.py 即可(-F表示打包成一个exe文件,包括其依赖库,-w是否显示黑框,-i表示窗口图标)

PyQt学习之路_第3张图片

你可能感兴趣的:(python,PyQt)