c# 怎么获取autosize为true的控件高度_PyQt5选择列表类控件

cd9a3e5e5f8fe30a6be5d6ee9a54d42a.png

大家好,本次分享PyQt5选择列表类控件。选择列表类控件主要以列表的形式为用户提供可选择的选项。主要包括ComboBox、FontComboBox和ListWidget等。

一、ComboBox:下拉组合框

4f41791615354bcecc394b275edda3a1.png主要用于在下拉组合框中显示数据,用户从中选择项。

QComboBox类常用方法及说明

方法说明
addItem()添加一个下拉列表项
addItems()从列表中添加下拉选项
currentText()获取选中项文本
currentIndex()获取选中项文本

itemText(index)

获取索引为index的项的文本
setItemText(index,text)设置索引为index的项的文本
count()获取所有选项的数量
clear()删除所有选项

常用信号

信号含义
Activated当用户选中一个下拉选项时发射该信号
currentIndexChanged当下拉选项的索引发生改变时发射该信号
highlighted当选中一个已经选中的下拉选项时,发射该信号

ComBox下拉列表使用示例

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class ComboxDemo(QWidget):
    def __init__(self, parent=None):
        super(ComboxDemo, self).__init__(parent)
        self.setWindowTitle("下拉列表框例子")
        self.resize(300, 90)
        layout = QVBoxLayout()
        self.lbl = QLabel("")

        self.comBox = QComboBox()
        self.comBox.addItem("Python")
        self.comBox.addItem("C++")
        self.comBox.addItems(["Java", "C#", "Php"])
        self.comBox.currentIndexChanged.connect(self.selectinfo)#下拉列表中选项发生改变时发射currentIndexChanged信号,连接槽函数selectinfo()
        layout.addWidget(self.comBox)
        layout.addWidget(self.lbl)
        self.setLayout(layout)

    def selectinfo(self,i):
        self.lbl.setText("Current index:{0}\n您选择的语言是:{1}".format(i,self.comBox.currentText()))
        self.lbl.adjustSize()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    comboxDemo = ComboxDemo()
    comboxDemo.show()
    sys.exit(app.exec_())

f10fc8c84ed1e283556f1a62a69ff56b.gif

二、FontComboBox:字体组合框

11aa91be61483e72cc09e246a0791276.png主要用于在下拉组合框中显示并选择字体。FontComboBox控件与ComboBox控件类似,提供了一个setFontFilters()方法,用于设置可以选择的字体。

  • QFontComboBox.AllFonts:所有字体

  • QFontComboBox.ScalableFonts:可以自动伸缩的字体

  • QFontComboBox.NonScalableFonts:不自动伸缩的字体

  • QFontComboBox.MonospacedFonts:等宽字体

  • QFontComboBox.ProportionalFonts:比例字体

FontComboBox字体组合框使用示例

import sys
from PyQt5.QtWidgets import *
from PyQt5 import QtCore, QtGui, QtWidgets

class FontComboBoxDemo(QWidget):
    def __init__(self, parent=None):
        super(FontComboBoxDemo, self).__init__(parent)
        self.setWindowTitle("字体组合框例子")
        self.resize(300, 90)
        #布局
        layout = QVBoxLayout()
        self.lbl = QLabel("Python数据分析实例")

        self.fontComboBox = QFontComboBox()

        #设置组合框中显示所有字体
        self.fontComboBox.setFontFilters(QtWidgets.QFontComboBox.AllFonts)
        #当选择字体发生改变时,发射currentIndexChanged信号,调用槽函数setfont()
        self.fontComboBox.currentIndexChanged.connect(self.setfont)
        #添加控件到窗口
        layout.addWidget(self.fontComboBox)
        layout.addWidget(self.lbl)
        self.setLayout(layout)
    #自定义槽函数,将选择的字体设置为Lable标签的字体
    def setfont(self):
        self.lbl.setFont(QtGui.QFont(self.fontComboBox.currentText()))
        self.lbl.adjustSize()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    FontCbDemo = FontComboBoxDemo()
    FontCbDemo.show()
    sys.exit(app.exec_())

ac05a63c576d584aa2b7d91f6fdc6f95.gif

三、ListWidget:列表

15ef912e58fcdc01058d4f48b382c1e2.pngQListWidget类是一个基于条目的接口,用于从列表中添加或删除条目。其内置了一个数据存储模型QListWidgetItem,使用addItem()或addItems()方法可添加列表项。

QListWidget类常用方法及说明

方法说明
addItem()向列表中添加项
addItems()一次向列表中添加多项
insertItem()指定索引处插入项
setCurrentItem()设置当前选择项

item.setToolTip()

设置提示内容
item.isSelected()判断项是否选中
item.text()获取项文本
sortItems()按升序重新排列条目
clear()删除所有列表项
setSelectionMode()

设置列表的选择模式:

1、QAbstractItemView.NoSelection,不选择

2、QAbstractItemView.SingleSelection,单选

3、QAbstractItemView.MultiSelection,多选

4、QAbstractItemView.ExtendedSelection,正常单选,按下Ctrl或shift键后,可多选

5、QAbstractItemView.ContigousSelection

setSelectionBehavior()

设置选择项的方式:

1、QAbstractItemView.SelectItems,选中当前项

2、QAbstractItemView.SelectRows,选中整行

3、QAbstractItemView.SelectColumns,选中整列

setViewMode()

设置显示模式:

1、QListView.ListMode,列表形式显示

2、QListView.IconMode,图表形式显示

setWordWrap()设置是否自动换行,True自动换行,False不自动换行

LIstWidget控件常用信号由两个:currentItemChanged(在列表中选择项发射改变时发射)和itemClicked(单击列表中的项时发射)。

ListWidget列表使用示例

import sys
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets
class ListWidgetDemo(QWidget):
    def __init__(self, parent=None):
        super(ListWidgetDemo, self).__init__(parent)
        self.setWindowTitle("列表框例子")
        self.resize(300,150)
        #布局
        layout = QVBoxLayout()
        self.lbl = QLabel("Python数据分析实例")

        self.listWidget = QListWidget()
        self.listWidget.resize(300, 120)

        # self.listWidget.addItem("Item 1");
        # self.listWidget.addItem("Item 2");
        # self.listWidget.addItem("Item 3");
        # self.listWidget.addItem("Item 4");

        from collections import OrderedDict
        # 定义有序字典,作为List列表的数据源
        dict = OrderedDict({'第1名': 'Item 1', '第2名': 'Item 2',
                            '第3名': 'Item 3', '第4名': 'Item 4',
                            '第5名': 'Item 5', '第6名': 'Item 6',
                            '第7名': 'Item 7', '第8名': 'Item 8'})
        for key, value in dict.items():  # 遍历字典,并分别获取到键值
            self.listWidget.addItem("{0}:{1}".format(key,value))
            #或
            # self.item = QtWidgets.QListWidgetItem(self.listWidget)  # 创建列表项
            # self.item.setText(key + ':' + value)  # 设置项文本
            self.listWidget.setToolTip(value)  # 设置提示文字

        # 设置列表中可以多选
        self.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection)
        # 设置选中方式为整行选中
        self.listWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
        # 设置以列表形式显示数据
        self.listWidget.setViewMode(QtWidgets.QListView.ListMode)
        self.listWidget.setWordWrap(True)  # 设置自动换行

        self.listWidget.itemClicked.connect(self.clicked)
        #添加控件到窗口
        layout.addWidget(self.listWidget)
        layout.addWidget(self.lbl)
        self.setLayout(layout)
    # 自定义槽函数,获取列表选中项的值
    def clicked(self, item):
        if item.isSelected():  # 判断项是否选中
            QMessageBox.information(self, "提示", "你选择了: " + item.text(),QMessageBox.Ok)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ListDemo = ListWidgetDemo()
    ListDemo.show()
    sys.exit(app.exec_())

1f7ed894d967af23b2bbb85e0f86658f.gif

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值