PyQt入门(7)-常用控件(中)

目录

一、输入类控件

1、QLineEdit

 2、QComboBox

3、QFontComboBox 

4、QTextEdit 

5、QPlainTextEdit 

6、QSpinBox和QDoubleSpinBox

7、QDateTimeEdit、QDateEdit、QTimeEdit

8、QSlider

9、QDial

10、QScrollBar

二、容器类控件

1、QGroupBox

 2、QScrollArea

3、QStackedWidget

4、QTabWidget

5、QToolBox

 6、QMdiArea

7、QDockWidget


一、输入类控件

这类控件比较多,这里只列一些常用的

1、QLineEdit

详情见官网:QLineEdit详细说明

这里简单介绍下两点:回显模式输入约束

回显模式即输入的字符的显示模式,通过setEchoMode()设置

常量说明
QLineEdit::Normal0默认模式,正常显示
QLineEdit::NoEcho1什么都不显示,一般用于连密码长度都保密的极端情况
QLineEdit::Password2显示平台无关的密码样式,一般是●或者*
QLineEdit::PasswordEchoOnEdit3正在输入的时候正常显示,输完之后变成密码样式

输入约束即限制QLineEdit的输入内容,一般有两种约束方式:validatorinputMask

validator的详细用法参见:QValidator详细说明 

这里主要说下inputMask,这种方式对大部分情况就已经够用了。

inputMask是一个字符串,其内的每个字符都是以下类型的一种:

掩码字符决定这里可以输入什么样的值
元字符代表一个特殊含义
分隔符所有非掩码字符和元字符的字符都作为一个不可变的分隔符

所有的掩码字符和元字符:

掩码字符含义
A只能输入字母类型的字符, 比如 A-Z, a-z.
a等同A,但是可以输入空格
N只能输入字母或数字类型的字符, 比如 A-Z, a-z, 0-9.
n等同N,但是可以输入空格
X任意非空白字符
x等同X,但是可以输入空格
9只能输入数字 0-9.
0等同9,但是可以输入空格
D只能输入非0数字 1-9
d等同D,但是可以输入空格
#只能+、-、0-9、空格
H十六进制字符 A-F, a-f, 0-9.
h等同H,但是可以输入空格
B二进制字符:0或1
b等同B,但是可以输入空格
元字符含义
>后面输入的所有字母类型的字符都会被转换成大写
<后面输入的所有字母类型的字符都会被转换成小写
!停止大小写转换
;c终止inputMask并将空白字符都设置成c
[ ] { }保留,目前不起作用,会被忽略掉
\清除上面所列的掩码字符和元字符作用,说白了就是把一个掩码字符或元字符变成一个分隔符

 下面用代码示例一下用法:

self.le_user1.setInputMask("AAAAAA")
# 6个任意字母
self.le_user2.setInputMask("AA>AADD")
# 2个任意字母,接着的2个字母会自动被转为大写,两个非0数字
self.le_user3.setInputMask("AA>A!Add")
# 2个任意字母,接着1个字母自动转大写,接着1个任意字母,接着2个数字或空格
self.le_user4.setInputMask("999.999.999.999;_")
# 一个ip地址格式的串,未输入之前显示___.___.___.___
self.le_user5.setInputMask("\AAAAAA")
#第一个字符固定是A,后接5个任意字母
self.le_user6.setInputMask("A1A2A3A")
#任意字母+1+任意字母+2+任意字母+3+任意字母

未输入之前显示如下:

输入之后:

2、QComboBox

下拉列表框,具体看官网文档吧:QComboBox详细说明

3、QFontComboBox 

展示系统字体的QComboBox:QFontComboBox详细说明

4、QTextEdit 

多行输入框:QTextEdit详细说明

5、QPlainTextEdit 

和QTextEdit区别就是QPlainTextEdit 只能显示纯文本,而QTextEdit可以显示富文本,具体见:QPlainTextEdit详细说明

6、QSpinBox和QDoubleSpinBox

微调框,一个整数,一个小数:QSpinBox详细说明QDoubleSpinBox详细说明

7、QDateTimeEdit、QDateEdit、QTimeEdit

日期时间编辑控件,见名知意吧,QDateEdit、QTimeEdit都是继承自QDateTimeEdit,QDateEdit和QDateTimeEdit都可以设置点击之后弹出日历界面选择日期,QTimeEdit不行,更多用法见官网文档:QTimeEdit详细说明QDateTimeEdit详细说明QDateEdit详细说明

8、QSlider

滑块,通过setOrientation()可以决定是水平还是垂直滑块:QSlider详细说明

9、QDial

类似圆形刻度表盘:QDial详细说明

10、QScrollBar

滚动条,这个一般用不到,pyqt的可滚动控件都带有滚动条,这个一般是在子类化QAbstractScrollArea实现自定义的可滚动控件时才会配合使用:QScrollBar详细说明

二、容器类控件

前面已经说过,pyqt中,大到窗体,小到文本标签,其实都是QWidget,所以QWidget其实就是最根本的容器控件,QFrame继承自QWidget,又衍生出了QAbstractScrollArea,pyqt的容器类控件都是继承自这三个控件。

1、QGroupBox

QGroupBox提供一个窗口和一个标题,QGroupBox不能直接添加Widget,需要先用一个layout把子widget都组织起来,然后把layout设置给QGroupBox。具体用法:QGroupBox详细说明

self.group_box = QGroupBox('爱好')
self.group_box.setCheckable(True)

self.a_1 = QCheckBox('游泳')
self.a_2 = QCheckBox('游戏')
self.a_3 = QCheckBox('看书')
self.a_4 = QCheckBox('爬山')

self.group_layout = QVBoxLayout()
self.group_layout.addWidget(self.a_1)
self.group_layout.addWidget(self.a_2)
self.group_layout.addWidget(self.a_3)
self.group_layout.addWidget(self.a_4)

self.group_box.setLayout(self.group_layout)

2、QScrollArea

QScrollArea用于给子widget提供滚动效果,子widget必须通过setWidget()指定,如果是通过setLayout()设置了layout的话,是没有滚动效果的,具体见:QScrollArea详细说明

self.scroll_area = QScrollArea()
self.temp = QWidget()
self.btn1 = QPushButton('第1个按钮')
self.btn2 = QPushButton('第2个按钮')
self.btn3 = QPushButton('第3个按钮')
self.btn4 = QPushButton('第4个按钮')
self.btn5 = QPushButton('第5个按钮')
self.btn6 = QPushButton('第6个按钮')
self.btn7 = QPushButton('第7个按钮')
self.scroll_layout = QVBoxLayout()
self.scroll_layout.addWidget(self.btn1)
self.scroll_layout.addWidget(self.btn2)
self.scroll_layout.addWidget(self.btn3)
self.scroll_layout.addWidget(self.btn4)
self.scroll_layout.addWidget(self.btn5)
self.scroll_layout.addWidget(self.btn6)
self.scroll_layout.addWidget(self.btn7)

self.temp.setLayout(self.scroll_layout)
self.scroll_area.setWidget(self.temp)
//说明:如果直接self.scroll_area.setLayout(self.scroll_layout)是没有滚动效果的

3、QStackedWidget

QStackedWidget是一个实现在QStackedLayout之上的便捷控件,同一时刻只有一个子widget能显示出来,具体参见:QStackedWidget详细说明

4、QTabWidget

可以这么理解,QTabWidget就是一个选项卡+一个QStackedWidget,QStackedWidget是没有提供一种外在的切换子widget的方式的,QTabWidget则可以通过选项卡来切换子widget的显示,QTabWidget具体用法参见:QTabWidget详细说明

self.btn1 = QPushButton('第1个按钮')
self.btn2 = QPushButton('第2个按钮')
self.btn3 = QPushButton('第3个按钮')

self.tab_widget = QTabWidget()
self.tab_widget.addTab(self.btn1, "按钮1")
self.tab_widget.addTab(self.btn2, "按钮2")
self.tab_widget.addTab(self.btn3, "按钮3")

5、QToolBox

QToolBox的效果和QTabWidget有点类型,不过它是一列选项,QToolBox通过addItem()来添加选项,需要提供子widget和选项名称,具体参见:QToolBox详细说明

self.tool_box = QToolBox()
self.tool_box.addItem(QPushButton('按钮1'), "选项1")
self.tool_box.addItem(QPushButton('按钮2'), "选项2")
self.tool_box.addItem(QPushButton('按钮3'), "选项3")

QToolBox

6、QMdiArea

QMdiArea通常用作QMainWindow中的中心小部件,用于创建MDI应用程序。QMdiArea的子widget都是QMdiSubWindow 的实例,通过addSubWindow()添加子widget,更多用法见:QMdiArea详细说明

self.mdiArea = QMdiArea()

self.sub1 = QMdiSubWindow()
self.sub2 = QMdiSubWindow()
self.mdiArea.addSubWindow(self.sub1)
self.mdiArea.addSubWindow(self.sub2)

self.setCentralWidget(self.mdiArea)

7、QDockWidget

QDockWidget类提供了一个小部件,它可以停靠在QMainWindow中,也可以作为桌面上的顶级窗口浮动。具体参见:QDockWidget详细说明。官网还有示例代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值