跳转至

基本UI实现

实现一个基本窗口

代码

import sys

from PyQt5.QtWidgets import QApplication, QWidget

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

    w = QWidget()

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

    # 展示窗口
    w.show()

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

实现效果

程序说明

  • app = QApplication(sys.argv)只要是Qt制作的app,必须有且仅有1个QApplication对象
  • w = QWidget()创建一个名字为w的QWidget对象
  • w.setWindowTitle("第一个PyQt")设置窗口标题为:第一个PyQt
  • w.show()调用show方法将窗口显示出来
  • app.exec()程序开始运行程序,直到关闭了窗口(程序循环)

PyQt模块介绍

PyQt中有众多的功能模块,开发中最常用的功能模块有三个:

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

基本UI

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

按钮控件

控件名:QPushButton

位置:PyQt5.QtWidgets

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

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

    w = QWidget()

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

    # 在窗口里面添加控件
    btn = QPushButton("按钮")

    # 设置按钮的父亲是当前窗口,等于是添加到窗口中显示
    btn.setParent(w)

    # 展示窗口
    w.show()

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

实现效果

纯文本控件

控件名:QLabel

位置:PyQt5.QtWidgets

纯文本控件仅用于显示文本,类似于登录框中的账号和密码。

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel

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

    w = QWidget()

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

    # 方法一
    # 下面创建一个Label,然后调用方法指定父类
    label = QLabel("账号: ")
    # 设置父对象
    label.setParent(w)

    # 方法二 
    # 下面创建一个Label(纯文本),在创建的时候指定了父对象
    label = QLabel("账号: ", w)

    # 显示位置与大小 : x, y , w, h
    label.setGeometry(20, 20, 30, 30)

    # 展示窗口
    w.show()

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

实现效果

输入框控件

控件名:QLineEdit

位置:PyQt5.QtWidgets

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit

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

    w = QWidget()

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

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

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

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

    # 展示窗口
    w.show()

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

实现效果

窗口大小方法

方法名:.resize

位置:PyQt5.QtWidgets

import sys

from PyQt5.QtWidgets import QApplication, QWidget

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

    w = QWidget()

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

    # 窗口的大小
    w.resize(300, 300)

    # 展示窗口
    w.show()

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

实现效果

设置窗口icon方法

方法名:setWindowIcon、QIcon

位置:PyQt5.QtWidgets、PyQt5.QtGui

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()

实现效果

实现窗口位于中间

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget

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

    w = QWidget()

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

    # 窗口的大小
    w.resize(300, 300)

    # 将窗口设置在屏幕的左上角
    # w.move(0, 0)

    # ===功能实现部分===
    # 调整窗口在屏幕中央显示
    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(x - width / 2, y - height / 2)
    # =========

    # 展示窗口
    w.show()

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