PyQt6第五章容器布局之5.1控件容器布局(5.1.3选项卡:QTabWidget)

5.1.3选项卡:QTabWidget

通过单击各选项卡可以查看对应的页面。 如果在一个窗口中显示的控件很多,则可以先进行拆分,分别放置在不同页面的选项卡中。 但不同页面的选项卡中控件的名称不能相同。 常用方法及说明如下:

addTabO:添加选项卡

inserTab():插入选项卡

removeTab():删除选项卡

currentWidget():获取当前选项卡

currentIndex():获取当前选项卡的索引

setCurrentIndex():设置当前选项卡的索引

setCurrentWidget():设置当前选项卡

setTabPosition():设置选项卡的标题位置(QTabWidget.TabPosition.x): North:标题在北方,即上边(默认值)

South:标题在南方,即下边

West:标题在西方,即左边

East:标题在东方,即右边

setTabsClosable():设置是否可以独立关闭选项卡,True表示可以关闭,在每个选项卡旁边会有一个关闭按钮;False表示不可以关闭

setTabText():设置选项卡标题文本

tabText():获取指定选项卡的标题文本

【例5.3】QTabWidget选项卡测试,如下:

import sys

from PyQt6.QtWidgets import QApplication, QWidget, QHBoxLayout, QTabWidget, QFormLayout, \
    QLineEdit, QRadioButton, QCheckBox, QPushButton


class myTabWidget(QTabWidget):
    def __init__(self):
        super().__init__()  # 调用父类QTabWidget的初始化方法
        self.initUI()  # 初始化UI界面

    def initUI(self):
        self.setGeometry(300, 300, 360, 160)  # 设置窗口的位置和大小
        self.setWindowTitle('QTabWidget测试')  # 设置窗口的标题
        self.setTabPosition(QTabWidget.TabPosition.North)  # 设置选项卡的位置为上方

        # 创建两个用于显示控件的QWidget对象
        self.tabW1 = QWidget()
        self.tabW2 = QWidget()

        # 将两个QWidget对象作为选项卡添加到QTabWidget中
        self.addTab(self.tabW1, '选项卡1')
        self.addTab(self.tabW2, '选项卡2')

        self.tabW1_UI()  # 初始化选项卡1的UI界面
        self.tabW2_UI()  # 初始化选项卡2的UI界面(注意:这段代码在原始代码中并未给出)

    def tabW1_UI(self):
        fLayout = QFormLayout()  # 创建一个表单布局对象

        self.xm = QLineEdit()  # 创建一个文本输入框用于输入姓名
        self.xb1 = QRadioButton('男')  # 创建一个单选按钮表示性别为男
        self.xb2 = QRadioButton('女')  # 创建一个单选按钮表示性别为女
        self.xb1.setChecked(True)  # 默认选中性别为男
        self.csny = QLineEdit()  # 创建一个文本输入框用于输入出生年月
        btn = QPushButton("确定")  # 创建一个按钮,标签为“确定”

        # 为按钮的点击事件绑定处理函数
        btn.clicked.connect(self.clickedFunc)

        hLay = QHBoxLayout()  # 创建一个水平布局对象
        hLay.addWidget(self.xb1)  # 将性别为男的单选按钮添加到水平布局中
        hLay.addWidget(self.xb2)  # 将性别为女的单选按钮添加到水平布局中

        # 将控件添加到表单布局中
        fLayout.addRow('姓名: ', self.xm)
        fLayout.addRow('性别: ', hLay)
        fLayout.addRow('出生年月: ', self.csny)
        fLayout.addRow(' ', btn)  # 注意这里添加了一个空格作为占位符,使得按钮能对齐

        self.setTabText(0, '基本信息')  # 修改第1个选项卡的标题为“基本信息”
        self.tabW1.setLayout(fLayout)  # 为选项卡1设置布局为刚刚创建的表单布局

    def tabW2_UI(self):
        # 创建一个水平布局对象
        hLay = QHBoxLayout()

        # 创建三个复选框,分别代表不同的编程语言
        self.cb1 = QCheckBox('C++')
        self.cb2 = QCheckBox('Java')
        self.cb3 = QCheckBox('C#')

        # 默认选中C++复选框
        self.cb1.setChecked(True)

        # 将复选框添加到水平布局中
        hLay.addWidget(self.cb1)
        hLay.addWidget(self.cb2)
        hLay.addWidget(self.cb3)

        # 修改第2个选项卡的标题为“编程语言”
        self.setTabText(1, '编程语言')

        # 为选项卡2设置布局为刚刚创建的水平布局
        self.tabW2.setLayout(hLay)

    def clickedFunc(self):
        # 当“确定”按钮被点击时,执行此函数
        # 打印姓名输入框中的内容
        print(self.xm.text())

        # 打印出生年月输入框中的内容
        print(self.csny.text())

        # 判断并打印性别单选按钮的状态
        if self.xb1.isChecked():
            print(self.xb1.text())
        else:
            print(self.xb2.text())

        # 判断并打印编程语言复选框的状态
        if self.cb1.isChecked():
            print(self.cb1.text())
        if self.cb2.isChecked():
            print(self.cb2.text())
        if self.cb3.isChecked():
            print(self.cb3.text())

        # 主程序入口

if __name__ == '__main__':
    # 创建QApplication对象,它是每个PyQt6应用程序的必需对象
    app = QApplication(sys.argv)

    # 创建myTabWidget类的实例
    w = myTabWidget()

    # 显示窗口
    w.show()

    # 进入应用程序的主事件循环
    sys.exit(app.exec())

实现一个带有多个选项卡的窗口应用程序。每个选项卡中包含不同的用户界面(UI)元素,允许用户进行交互操作。以下是关于这段代码的功能、使用的控件、布局和关键语句的详细解释:

功能

  1. 创建多选项卡窗口:通过myTabWidget类,创建了一个包含多个选项卡的窗口。
  2. 选项卡UI定制tabW2_UI方法用于定制第二个选项卡的UI,包括添加复选框控件。
  3. 用户交互响应clickedFunc方法定义了当用户点击某个按钮时应该执行的操作,例如打印输入框和复选框的状态。

控件

  1. QTabWidget:用于创建多选项卡窗口。
  2. QHBoxLayout:水平布局管理器,用于在选项卡中水平排列控件。
  3. QCheckBox:复选框控件,用于让用户从多个选项中选择一个或多个。
  4. QLineEdit(未在提供的代码片段中显示,但提到了self.xmself.csny):文本输入框控件,用于用户输入文本。
  5. QRadioButton(未在提供的代码片段中显示,但提到了self.xb1self.xb2):单选按钮控件,用于让用户从多个选项中选择一个。
  6. QPushButton(未在提供的代码片段中显示,但提到了点击事件的响应):按钮控件,用于触发用户操作。

布局

  1. 水平布局(QHBoxLayout):用于在第二个选项卡中水平排列三个复选框控件。

关键语句

  1. 创建选项卡和布局
    • hLay = QHBoxLayout():创建水平布局对象。
    • self.setTabText(1, '编程语言'):设置第二个选项卡的标题。
    • self.tabW2.setLayout(hLay):为第二个选项卡设置布局。
  2. 添加控件到布局
    • hLay.addWidget(self.cbX):将复选框控件添加到水平布局中(X代表1、2、3)。
  3. 用户交互响应
    • if self.cbX.isChecked()::检查复选框是否被选中。
    • print(self.cbX.text()):打印复选框的文本内容。
  4. 应用程序启动
    • app = QApplication(sys.argv):创建应用程序对象。
    • w = myTabWidget():创建myTabWidget窗口实例。
    • w.show():显示窗口。
    • sys.exit(app.exec()):进入应用程序的主事件循环。

这段代码是一个基本的PyQt6应用程序示例,展示了如何创建窗口、添加控件、设置布局以及响应用户交互事件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值