本文内容将持续更新
目录
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博客
常量 | 值 | 描述 | 收缩 | 拉伸 |
Fixed | 0 | widget的尺寸固定就是sizeHint()的值 | 不能 | 不能 |
Minimum | GrowFlag(1) | widget的尺寸不能比sizeHint()小。widget倾向于拉伸 | 不能 | 能 |
Maximum | ShrinkFlag(4) | widget的尺寸不能比sizeHint()大。 | 能 | 不能 |
Preferred | GrowFlag|ShrinkFlag(5) | sizeHint()是widget最合理的尺寸。这个策略是很多widget的默认策略。widget倾向于拉伸 | 能 | 能 |
Expanding | GrowFlag|ShrinkFlag|ExpandFlag(7) | sizeHint()对widget来说是一个合理的尺寸。widget倾向于拉伸 | 能 | 能 |
MinimumExpanding | GrowFlag|ExpandFlag(3) | widget的尺寸不能比sizeHint()小。widget倾向于拉伸 | 不能 | 能 |
Ignored | ShrinkFlag|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')
# 返回的是字符型