PyQt5的组件介绍
一、博客借鉴
二、部分组件的介绍
2.1 空白窗口演示
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 2022/9/18 12:48
# Author : root
# File : exam.py
from PyQt5.Qt import *
import sys
class Study(object):
def __init__(self):
self.app = QApplication(sys.argv) #持久化一个应用 必须有
self.win = QWidget() #一个窗口 必须有
self.win.setWindowTitle("组件演示") #标题
self.win.setWindowIcon(QIcon("sheep.ico")) #设置窗口图标
self.win.setGeometry(100,100,800,400) #设置窗口大小(左上角位置坐标,长,宽)
if __name__ == '__main__':
s = Study()
s.win.show() #展示窗口 必须有
sys.exit(s.app.exec_()) #应用执行完则释放内存 必须有
2.2 组件介绍
from PyQt5.Qt import *
import sys
""" QHBoxLayout(水平布局)
QVBoxLayout(垂直布局)
QGridLayout(网格方式布局)
QFormLayout(双栏,第一栏是 Label,第二栏是 Widget)"""
class Study(object):
def __init__(self):
self.app = QApplication(sys.argv)
self.win = QWidget()
self.win.setWindowTitle("各种小组件演示")
self.win.setWindowIcon(QIcon("sheep.ico"))
self.win.setGeometry(100,100,400,400)
#---------------------标签演示------------
def label1(self):
# QLable可以使用 html 的文本;使用move将标签移动到指定位置;.resize()重新设置大小,但是设置位置和大小
#很麻烦;另外一种方式是使用 .resizeEvent() 来动态的计算组件的位置和大小。
# 但是最高效的方式是使用 layout managers
QLabel("<h1>标签1</h1>",self.win).move(180,0)
#---------------------按钮演示------------
def button1(self):
QPushButton("确认",parent=self.win).move(180,30)
# ---------------------下拉框演示------------
def Comboboxes1(self):
items = ["--请选择时间--","一点钟","二点钟","三点钟","四点钟"]
qc = QComboBox(parent=self.win)
qc.addItems(items)
qc.setCurrentText("--请选择时间--")
qc.move(180,60)
# ---------------------单选按钮演示------------
def choose(self):
qr1 = QRadioButton(parent=self.win)
qr2 = QRadioButton(parent=self.win)
qr1.setText("选择按钮1")
qr2.setText("选择按钮2")
qr1.move(180,90)
qr2.move(180,120)
# ---------------------多选按钮演示------------
def mul_choose(self):
mc1 = QCheckBox(parent=self.win)
mc1.setText("复选框1")
mc1.move(180,150)
mc2 = QCheckBox(parent=self.win)
mc2.setText("复选框2")
mc2.move(180, 180)
# ---------------------文本输入框演示------------
def editline1(self):
ed = QLineEdit(parent=self.win)
ed.move(180,210)
# ---------------------水平布局演示------------
def h_show(self):
layout = QHBoxLayout()
layout.addWidget(QPushButton("确认"))
layout.addWidget(QPushButton("取消"))
layout.addWidget(QPushButton("锁定"))
layout.addWidget(QPushButton("复制"))
layout.setContentsMargins(60,160,50,0) #设置与上一个控件的距离
layout.setSpacing(20) #设置水平布局里面的组件距离
self.win.setLayout(layout)
# ---------------------垂直布局演示------------
def v_show(self):
layout = QVBoxLayout()
layout.addWidget(QPushButton("确认"))
layout.addWidget(QPushButton("取消"))
layout.addWidget(QPushButton("锁定"))
layout.addWidget(QPushButton("复制"))
layout.setContentsMargins(10,0,300,0) #距离边框的距离(左,上,右,下)
layout.setSpacing(20) #设置水平布局里面的组件距离
self.win.setLayout(layout)
# ---------------------网格布局演示------------
def g_show(self):
layout = QGridLayout()
layout.addWidget(QPushButton("确认"),0,0) #""" 所在行;2. 所在列;3. rowSpan, 跨的行数;4. columnSpan, 跨的列数."""
layout.addWidget(QPushButton("取消"),1,0)
layout.addWidget(QPushButton("锁定"),2,0)
layout.addWidget(QPushButton("复制"),3,0)
layout.setContentsMargins(10, 0, 300, 0) # 距离边框的距离(左,上,右,下)
layout.setSpacing(20) # 设置水平布局里面的组件距离
self.win.setLayout(layout)
# ---------------------表单布局演示------------
def f_show(self):
layout = QFormLayout()
layout.addRow(QLabel("姓名:"),QLineEdit())
layout.addRow(QLabel("电话:"),QLineEdit())
layout.setContentsMargins(10, 0, 300, 0) # 距离边框的距离(左,上,右,下)
# layout.setSpacing(20) # 设置水平布局里面的组件距离
self.win.setLayout(layout)
def exit(self):
# self.h_show() #这里注释掉了,想看效果的可以取消注释
# self.v_show()
# self.g_show()
self.f_show()
self.Comboboxes1()
self.label1()
self.button1()
self.choose()
self.mul_choose()
self.editline1()
self.win.show() #等组件调用后再展示窗口
sys.exit(self.app.exec_())
if __name__ == '__main__':
s = Study()
s.exit()
效果图: