PyQt5 第五章 控件(四)

5.6 分隔器

QSplitter组件能让用户通过拖拽分割线的方式来改变子窗口大小

程序展示

本例中,创建了用两个分割线隔开的三个QFrame组件

import sys
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QFrame
from PyQt5.QtWidgets import QSplitter, QStyleFactory, QApplication
from PyQt5.QtCore import Qt

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        hbox = QHBoxLayout(self)

        topleft = QFrame(self)
        topleft.setFrameShape(QFrame.StyledPanel)

        topright = QFrame(self)
        topright.setFrameShape(QFrame.StyledPanel)

        bottom = QFrame(self)
        bottom.setFrameShape(QFrame.StyledPanel)

        splitter1 = QSplitter(Qt.Horizontal)
        splitter1.addWidget(topleft)
        splitter1.addWidget(topright)

        splitter2 = QSplitter(Qt.Vertical)
        splitter2.addWidget(splitter1)
        splitter2.addWidget(bottom)

        hbox.addWidget(splitter2)
        self.setLayout(hbox)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QSplitter')
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    e = Example()
    sys.exit(app.exec_())

程序预览:

PyQt5 第五章 控件(四)

代码解释

为了更清楚的看到分割线,我们使用了设置好的子窗口样式

topleft = QFrame(self)
topleft.setFrameShape(QFrame.StyledPanel)

创建一个QSplitter组件,并在里面添加了两个框架。

splitter1 = QSplitter(Qt.Horizontal)
splitter1.addWidget(topleft)
splitter1.addWidget(topright)

也可以在分割线里面再进行分割。

splitter2 = QSplitter(Qt.Vertical)
splitter2.addWidget(splitter1)

5.7 下拉框

QComboBox组件能让用户在多个选择项中选择一个

程序展示

本例中,创建了一个下拉框控件和一个标签,标签内容为选定的内容

import sys
from PyQt5.QtWidgets import QWidget, QLabel, QComboBox, QApplication

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.lable = QLabel(self)
        self.lable.move(80, 0)

        self.initUI()

    def initUI(self):
        com = QComboBox(self)
        com.addItems(["湖南", "湖北", "河南", "河北"])
        com.activated[str].connect(self.valuechange)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('下拉框')
        self.show()

    def valuechange(self, text):
        self.lable.setText(text)
        self.lable.adjustSize()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    e = Example()
    sys.exit(app.exec_())

程序预览:
PyQt5 第五章 控件(四)

代码解释

创建一个QComboBox组件和选项

com = QComboBox(self)
com.addItems(["湖南", "湖北", "河南", "河北"])

将每个选项绑定选valuechange事件

com.activated[str].connect(self.valuechange)

在方法内部,设置标签内容为选定的字符串,然后设置自适应文本大小

def valuechange(self, text):
    self.lable.setText(text)
    self.lable.adjustSize()
上一篇:QT QSplitter设置初始比例setStretchFactor失效解决


下一篇:QT QSplitter设置初始比例setStretchFactor失效解决