RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1320213
Accepted
DaYa
DaYa
Asked:2022-08-22 13:46:45 +0000 UTC2022-08-22 13:46:45 +0000 UTC 2022-08-22 13:46:45 +0000 UTC

PyQt5如何读取列表小部件?

  • 772

我想写一个音乐播放器之类的东西,当你从列表中选择一个mp3时,它就会播放。但是,到目前为止,我什至还没有达到选择元素时,click.

帮助处理工作表中的点击。视觉效果是使用Qt Designer制作的。

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

import sys


def clicked():     #Функция которая должна вызываться при выборе элемента из списка(можно не обращать внимание.)
    print("click")


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(640, 402)
        MainWindow.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0.182, y1:0.102409, x2:1, y2:1, stop:0.113636 rgba(0, 62, 79, 147), stop:0.306818 rgba(28, 14, 68, 156));")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(-130, -40, 1031, 491))
        self.label.setText("")
        self.label.setPixmap(QtGui.QPixmap("2HYI.gif"))
        self.label.setObjectName("label")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(0, 310, 641, 80))
        self.widget.setObjectName("widget")
        self.listWidget = QtWidgets.QListWidget(self.centralwidget) #Начиная отсюда list
        self.listWidget.setGeometry(QtCore.QRect(0, 0, 121, 311))
        self.listWidget.setStyleSheet("font: 75 italic 8pt \"MS Sans Serif\";\n"
"color: rgb(121, 92, 121);")
        self.listWidget.setObjectName("listWidget")
        item = QtWidgets.QListWidgetItem()
        font = QtGui.QFont()
        font.setFamily("Roman")
        font.setBold(True)
        font.setItalic(True)
        font.setWeight(75)
        item.setFont(font)
        self.listWidget.addItem(item)
        item = QtWidgets.QListWidgetItem()
        self.listWidget.addItem(item)
        item = QtWidgets.QListWidgetItem()
        self.listWidget.addItem(item)
        item = QtWidgets.QListWidgetItem()
        self.listWidget.addItem(item) 
        #сюда я пытался привязать clicked и connect
        MainWindow.setCentralWidget(self.centralwidget) 
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow): 
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        __sortingEnabled = self.listWidget.isSortingEnabled()
        self.listWidget.setSortingEnabled(False)
        item=self.listWidget.item(0)
        item.setText(_translate("MainWindow", "New Item"))
        item = self.listWidget.item(1)
        item.setText(_translate("MainWindow", "New Item"))
        item = self.listWidget.item(2)
        item.setText(_translate("MainWindow", "New Item"))
        item = self.listWidget.item(3)
        item.setText(_translate("MainWindow", 'w'))
        self.listWidget.setSortingEnabled(__sortingEnabled)

#сюда тоже

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在Qt Designer中,我listwidget发现了一些关于listview.

python
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Tehnorobot
    2022-08-22T16:16:37Z2022-08-22T16:16:37Z

    一般来说,我需要对工作表中的点击进行处理

    您可以使用该功能itemClicked。

    例如,点击元素的处理 listWidget可以绑定到一个函数clicked,只需将函数本身添加到类中Ui_MainWindow:

    def setupUi(self, MainWindow):
        . . . 
        self.listWidget.itemClicked.connect(self.clicked)
    
    def clicked(self, item):
        print(f'clicked {item}') 
    
    • 0
  2. Best Answer
    S. Nick
    2022-08-22T17:17:03Z2022-08-22T17:17:03Z

    不要更改Qt Designer生成的代码。创建另一个从相应小部件继承的类,并使用生成的类来填充它。

    无效 QListWidget:: itemClicked(QListWidgetItem *item)

    当在小部件中的元素上按下鼠标按钮时,该信号与指定元素一起发出。

    主文件

    import sys
    from PyQt5 import QtGui, QtCore, QtWidgets
    from PyQt5.QtWidgets import *
    
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(640, 402)
            MainWindow.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0.182, y1:0.102409, x2:1, y2:1, stop:0.113636 rgba(0, 62, 79, 147), stop:0.306818 rgba(28, 14, 68, 156));")
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.label = QtWidgets.QLabel(self.centralwidget)
            self.label.setGeometry(QtCore.QRect(-130, -40, 1031, 491))
            self.label.setText("")
            self.label.setPixmap(QtGui.QPixmap("2HYI.gif"))
            self.label.setObjectName("label")
            self.widget = QtWidgets.QWidget(self.centralwidget)
            self.widget.setGeometry(QtCore.QRect(0, 310, 641, 80))
            self.widget.setObjectName("widget")
            self.listWidget = QtWidgets.QListWidget(self.centralwidget) #Начиная отсюда list
            self.listWidget.setGeometry(QtCore.QRect(0, 0, 121, 311))
            self.listWidget.setStyleSheet("font: 75 italic 8pt \"MS Sans Serif\";\n"
    "color: rgb(121, 92, 121);")
            self.listWidget.setObjectName("listWidget")
            item = QtWidgets.QListWidgetItem()
            font = QtGui.QFont()
            font.setFamily("Roman")
            font.setBold(True)
            font.setItalic(True)
            font.setWeight(75)
            item.setFont(font)
            self.listWidget.addItem(item)
            item = QtWidgets.QListWidgetItem()
            self.listWidget.addItem(item)
            item = QtWidgets.QListWidgetItem()
            self.listWidget.addItem(item)
            item = QtWidgets.QListWidgetItem()
            self.listWidget.addItem(item)
         
            MainWindow.setCentralWidget(self.centralwidget) 
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow): 
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
            __sortingEnabled = self.listWidget.isSortingEnabled()
            self.listWidget.setSortingEnabled(False)
            item=self.listWidget.item(0)
            item.setText(_translate("MainWindow", "New Item"))
            item = self.listWidget.item(1)
            item.setText(_translate("MainWindow", "New Item"))
            item = self.listWidget.item(2)
            item.setText(_translate("MainWindow", "New Item"))
            item = self.listWidget.item(3)
            item.setText(_translate("MainWindow", 'w'))
            self.listWidget.setSortingEnabled(__sortingEnabled)
    
    
    class MainWindow(QMainWindow, Ui_MainWindow):                     
        def __init__(self):
            super().__init__()
            
            self.setupUi(self)
            
            self.myList = ['Item 1', 'Item 2', 'Item 3', 'Item 4', ]
            self.listWidget.addItems(self.myList)
            
            self.listWidget.itemClicked.connect(self.onClicked)
            
        def onClicked(self, item): 
            print(f'\nitem: {item}') #
            print(f'item.text: {item.text()}') #
          
    
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        w = MainWindow()
        w.show()
        sys.exit(app.exec_())
    

    在此处输入图像描述

    • 0

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5