PyQt学习笔记01基本UI

一、总述:

学习链接:https://doc.itprojects.cn/0001.zhishi/python.0008.pyqt5rumen/index.html#/02.ui

#QT练习的快速入门程序
import sys

from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':
    #只要是QT的对象 有且只有一个Qapplication
    #sys.argv传递运行参数到Qapplication对象去
    app = QApplication(sys.argv)

    #创建了一个Qwidget对象,并且设置好它的标题
    w = QWidget()

    # 设置窗口标题
    w.setWindowTitle("我的第一个PyQt窗口")

    #调用show()方法显示出这个对象
    # 展示窗口
    w.show()

    # 程序进行循环等待状态
    app.exec()

image-20230907204114363

开发中最常用的功能模块主要有三个:

  • QtCore:包含了核心的非GUI的功能。主要和时间、文件与文件夹、各种数据、流、URLs、mime类文件、进程与线程一起使用
  • QtGui:包含了窗口系统、事件处理、2D图像、基本绘画、字体和文字类
  • QtWidgets:包含了一些列创建桌面应用的UI元素

用到什么功能就它相关的api或者别人分享的使用心得,这是学习最快的方式

本节所有代码汇总所示:

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QPushButton,QLineEdit,QDesktopWidget
from PyQt5.QtGui import QIcon

if __name__ == '__main__':
    #sys.argv 是Python标准输入参数列表,通常用于命令行参数。
    #只要是QT的对象 有且只有一个Qapplication
    #sys.argv传递运行参数到Qapplication对象去
    app = QApplication(sys.argv)

    #创建一个对象
    w = QWidget()

    # 设置窗口标题
    w.setWindowTitle("第一个PyQt")
    #更改窗口的大小
    w.resize(500,200)

    #设置窗口的图标,注意图像的素材文件要在文件夹中
    w.setWindowIcon(QIcon('panda.jpg'))

    # 调整窗口在屏幕中央显示
    center_pointer = QDesktopWidget().availableGeometry().center()
    x = center_pointer.x()
    y = center_pointer.y()
    # w.move(x, y)
    # w.move(x-150, y-150)
    print(w.frameGeometry())
    print(w.frameGeometry().getRect())
    print(type(w.frameGeometry().getRect()))
    old_x, old_y, width, height = w.frameGeometry().getRect()
    w.move(int(x - width / 2), int(y - height / 2))

    # 纯文本
    #创建一个Label,并且指定它的父类是谁
    label = QLabel("账号:", w)
    #显示位置和大小
    label.setGeometry(20, 20, 35, 40)

    #创建一个能够进行输入的文本框
    edit = QLineEdit(w)
    edit.setPlaceholderText("请输入账号")
    #显示位置和大小
    edit.setGeometry(85, 20, 200, 40)

    # 在窗口里面添加控件
    btn = QPushButton("注册", w)
    btn.setGeometry(50, 80, 70, 30)

    # 展示窗口
    w.show()

    # 程序进行循环等待状态
    app.exec()

二、基本UI情况

窗口内的所有控件,若想在窗口中显示,都需要表示它的父亲是谁,而不能直接使用 show 函数显示

1、按钮

按钮对应的控件名称为 QPushButton , 开头库的声明中位于 PyQt5.QtWidgets 里面

#在窗口中创建控件
btn = QPushButton("按键")
#添加到当前窗口显示,表示它的父亲是谁
btn.setParent(w)

image-20230907204048647

2、文本

纯文本控件名称为 QLabel , 位于 PyQt5.QtWidgets 里面

#创建一个Label,并且指定它的父类是谁
label = QLabel("账号",w)
label.setParent(w)
#显示位置和大小
label.setGeometry(150,100,50,50)

image-20230907204558242

3、输入框

输入框的控件名称为 QLineEdit, 位于 PyQt5.QtWidgets 里面

#创建一个能够进行输入的文本框
edit = QLineEdit(w)
edit.setPlaceholderText("请输入账号")
edit.setGeometry(50,80,70,30)

image-20230907205510906

4、调整窗口的大小

w.resize(500,200)
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QPushButton,QLineEdit

if __name__ == '__main__':
    #sys.argv 是Python标准输入参数列表,通常用于命令行参数。
    app = QApplication(sys.argv)

    #创建一个对象
    w = QWidget()

    # 设置窗口标题
    w.setWindowTitle("第一个PyQt")
    w.resize(500,200)

    # 纯文本
    label = QLabel("账号:", w)
    label.setGeometry(20, 20, 35, 40)

    # 文本框
    edit = QLineEdit(w)
    edit.setPlaceholderText("请输入账号")
    edit.setGeometry(85, 20, 200, 40)

    # 在窗口里面添加控件
    btn = QPushButton("注册", w)
    btn.setGeometry(50, 80, 70, 30)

    # 展示窗口
    w.show()

    # 程序进行循环等待状态
    app.exec()

image-20230907210441681

5、将窗口移到屏幕的中央

# 调整窗口在屏幕中央显示
center_pointer = QDesktopWidget().availableGeometry().center()
x = center_pointer.x()
y = center_pointer.y()
# w.move(x, y)
# w.move(x-150, y-150)
print(w.frameGeometry())
print(w.frameGeometry().getRect())
print(type(w.frameGeometry().getRect()))
old_x, old_y, width, height = w.frameGeometry().getRect()
w.move(int(x - width / 2), int(y - height / 2))

注意下面的强制类型转换

6、设置窗口icon

import sys

from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':
    app = QApplication(sys.argv)

    # 创建一个QWidget
    w = QWidget()
    # 设置标题
    w.setWindowTitle("看看我图标帅吗")
    #设置窗口的图标,注意图像的素材文件要在文件夹中
    w.setWindowIcon(QIcon('panda.png'))
    # 显示QWidget
    w.show()

    app.exec()

image-20230907211933173