PyQt5_基础控件使用

本文内容将持续更新

目录

QGroupBox

QScrollArea

QLabel

QSpinBox

布局中添加分隔线QFrame

控件尺寸策略

QDateEdit 


QGroupBox

 

import sys
from PyQt5 import QtCore,QtWidgets

class GroupBoxWidget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.init_data()
        self.init_ui()
    def init_data(self):
        pass
    def init_ui(self):
        self.setWindowTitle('QGroupBox实例')
        self.resize(400,300)
        groupbox = QtWidgets.QGroupBox('内容',self)
        label1 = QtWidgets.QLabel('桃园三结义')
        label2 = QtWidgets.QLabel('黛玉葬花')
        label3 = QtWidgets.QLabel('孙悟空大闹天宫')
        label4 = QtWidgets.QLabel('武松打虎')
        btn5 = QtWidgets.QPushButton('四大名著')
        layout_box = QtWidgets.QVBoxLayout()
        layout_box.addWidget(label1)
        layout_box.addWidget(label2)
        layout_box.addWidget(label3)
        layout_box.addWidget(label4)
        layout_box.addWidget(btn5)
        layout_box.addStretch(1)
        groupbox.setLayout(layout_box)

        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(groupbox)
        self.setLayout(layout)
        pass

if __name__ == '__main__':
    QtCore.QCoreApplication.setAttribute(QtCore.Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
    app = QtWidgets.QApplication(sys.argv)
    temp_widget = GroupBoxWidget()
    temp_widget.show()
    app.exec()
    pass

QScrollArea

import sys
from PyQt5 import QtCore,QtWidgets

class QScrollAreaWidget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.init_data()
        self.init_ui()
    def init_data(self):
        pass
    def init_ui(self):
        self.setWindowTitle('QScrollArea实例')
        self.resize(400,200)

        label_title = QtWidgets.QLabel('下面的内容都在QScrollArea中')

        label_00 = QtWidgets.QLabel('中国古典名著')
        label_01 = QtWidgets.QLabel('红楼梦')
        label_02 = QtWidgets.QLabel('三国演义')
        label_03 = QtWidgets.QLabel('水浒传')
        label_04 = QtWidgets.QLabel('西游记')

        groupbox = QtWidgets.QGroupBox('内容',self)
        label1 = QtWidgets.QLabel('桃园三结义')
        label2 = QtWidgets.QLabel('黛玉葬花')
        label3 = QtWidgets.QLabel('孙悟空大闹天宫')
        label4 = QtWidgets.QLabel('武松打虎')
        btn5 = QtWidgets.QPushButton('四大名著')
        layout_box = QtWidgets.QVBoxLayout()
        layout_box.addWidget(label1)
        layout_box.addWidget(label2)
        layout_box.addWidget(label3)
        layout_box.addWidget(label4)
        layout_box.addWidget(btn5)
        layout_box.addStretch(1)
        groupbox.setLayout(layout_box)

        btn_00 = QtWidgets.QPushButton('分享')
        btn_01 = QtWidgets.QPushButton('打开')

        layout_area = QtWidgets.QVBoxLayout()
        layout_area.addWidget(label_00)
        layout_area.addWidget(label_01)
        layout_area.addWidget(label_02)
        layout_area.addWidget(label_03)
        layout_area.addWidget(label_04)
        layout_area.addWidget(groupbox)
        layout_area.addWidget(btn_00)
        layout_area.addWidget(btn_01)

        area_content_widget = QtWidgets.QWidget()
        area_content_widget.setLayout(layout_area)

        scroll_area = QtWidgets.QScrollArea()
        scroll_area.setWidget(area_content_widget)
        scroll_area.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)

        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(label_title)
        layout.addWidget(scroll_area)
        self.setLayout(layout)
        pass

if __name__ == '__main__':
    QtCore.QCoreApplication.setAttribute(QtCore.Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
    app = QtWidgets.QApplication(sys.argv)
    temp_widget = QScrollAreaWidget()
    temp_widget.show()
    app.exec()
    pass

QLabel

常用方法

方法描述
setAlignment()

按固定值方式对齐文本:

Qt.AlignLeft        Qt.AlignRight        Qt.ALignCenter        Qt.AlignJustify

Qt.AlignTop        Qt.AlignBottom        Qt.AlignVCenter

setIndent()设置文本缩进
setPixmap()设置Qlabel为一个Pixmap图片
text()获取文本内容
setText()设置文本内容
selectedText()返回所选择的字符
setBuddy()设置QLabel的助记符及buddy(伙伴),即使用QLabel设置快捷键,会在快捷键后将焦点设置到其buddy上,这里用到了QLabel的交互控件功能。此外,buddy可以是任何一个widget控件,使用setBuddy(QWidget *)设置,其QLabel必须是文本内容,并且使用“&”符号设置了助记符
setWordWrap()设置是否允许换行

 给文本添加样式

temp_label = QWidgets.QLabel()
temp_label.setStyleSheet('QLabel{font-size:18px;font-weight:bold;}')

QSpinBox

常用方法

方法描述
setMinimum()设置计数器的下边界
setMaximum()设置计数器的上边界 
setRange()设置计数器的最大值、最小值和步长值
setValue()设置计数器的当前值
value()返回计数器的当前值
singleStep()设置计数器的步长值

布局中添加分隔线QFrame

        h_line = QtWidgets.QFrame()
        h_line.setFrameShape(QtWidgets.QFrame.HLine)
        h_line.setFrameShadow(QtWidgets.QFrame.Sunken)

 setFrameShape(QFrame.Shape)  # 设置框架形状

参数描述
QFrame.NoFrame什么都没画
QFrame.Box围绕其内容绘制一个框(需要设置外线和中线的宽度)
QFrame.Panel绘制一个面板,使内容显得凸起或凹陷
QFrame.HLine绘制一条没有框架的水平线
QFrame.VLine绘制一条没有框架的垂直线
QFrame.StyledPanel绘制一个矩形面板,其外观取决于当前的GUI样式。可以凸起或凹陷 

setFrameShadow(QFrame.Shadow)

参数描述
QFrame.Plain框架和内容与周围环境差不多
QFrame.Raised凸起
QFrame.Sunken凹陷

控件尺寸策略

PyQt入门(4)-尺寸策略和布局(上)_pyqt设置layout大小_glz_gqq的博客-CSDN博客

常量描述收缩拉伸
Fixed0widget的尺寸固定就是sizeHint()的值不能不能
MinimumGrowFlag(1)widget的尺寸不能比sizeHint()小。widget倾向于拉伸不能
MaximumShrinkFlag(4)widget的尺寸不能比sizeHint()大。不能
PreferredGrowFlag|ShrinkFlag(5)sizeHint()是widget最合理的尺寸。这个策略是很多widget的默认策略。widget倾向于拉伸
ExpandingGrowFlag|ShrinkFlag|ExpandFlag(7)sizeHint()对widget来说是一个合理的尺寸。widget倾向于拉伸
MinimumExpandingGrowFlag|ExpandFlag(3)widget的尺寸不能比sizeHint()小。widget倾向于拉伸不能
IgnoredShrinkFlag|GrowFlag|IgnoreFlag(13)widget的尺寸可以任意变大变小。widget倾向于拉升

 拉伸优先级:

(Expanding = MinimumExpanding)> (Preferred = Ignored = Minmum ),就是说Expanding和Preferred放在一个布局里的话,会拉伸Expanding,收缩Preferred.

关于收缩:

Ignored:最小可以收缩到minimumSize(默认0),就是可以收缩到不显示widget.

其他模式:无论怎么收缩,widget一定可以完整显示出来。

QDateEdit 

# 创建并赋值        
self.left_point = QtWidgets.QDateEdit()
        self.left_point.setDisplayFormat('yyyy-MM-dd')
        self.left_point.setCalendarPopup(True)
        self.right_point = QtWidgets.QDateEdit()
        self.right_point.setDisplayFormat('yyyy-MM-dd')
        self.right_point.setCalendarPopup(True)
        self.right_point.setDate(QtCore.QDate.currentDate())
# 取值
left_point = self.left_point.date().toString('yyyy-MM-dd')
        right_point = self.right_point.date().toString('yyyy-MM-dd')
# 返回的是字符型

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值