基本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")
设置窗口标题为:第一个PyQtw.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()