如何在 PyQt5 中按下时切换按钮文本

2023-12-30

我正在尝试使用 PyQt5 按下时更改按钮文本。我有一个已填充的表格,每行都有一个按钮。最初,该按钮应显示“播放”,按下后应显示“暂停”。

我使用以下方法填充表格并处理按钮按下操作:

def populate_table(self, total, my_songs):
    self.create_rows(total)
    btn_press = 0

    for row in range(total):
        for col in range(4):
            self.tableWidget.setItem(row, 0, QtWidgets.QTableWidgetItem(str(my_songs[row].get_title())
                                                                        .strip('"\'')))
            self.tableWidget.setItem(row, 1, QtWidgets.QTableWidgetItem(str(my_songs[row].get_artist())
                                                                        .strip('"\'')))
            self.tableWidget.setItem(row, 2, QtWidgets.QTableWidgetItem(str(my_songs[row].get_album())
                                                                        .strip('"\'')))
            self.tableWidget.setItem(row, 3, QtWidgets.QTableWidgetItem(str(my_songs[row].get_length())
                                                                        .strip('"\'')))
            # self.tableWidget.setItem(row, 4, QtWidgets.QPushButton('Play'))

            self.btn_play = QPushButton("Play", self)
            self.btn_play.clicked.connect(lambda: self.handle_play_button(self.btn_press))
            self.tableWidget.setCellWidget(row, 4, self.btn_play)

def handle_play_button(self, btn_press):
    button = QtWidgets.qApp.focusWidget()
    # or button = self.sender()
    index = self.tableWidget.indexAt(button.pos())
    if index.isValid():
        self.btn_press += 1
        print(index.row(), index.column(), btn_press)
        self.btn_play.setText("Pause")  #This does not work

这让我知道按下了哪个按钮,以便我可以继续播放歌曲。下面的例子给出here https://www.tutorialspoint.com/pyqt/pyqt_qpushbutton_widget.htm我尝试使用setText,但我没有看到任何可见的文本变化。关于如何做到这一点有什么建议吗?谢谢!

EDIT:

代表我的错误。无论按下哪个按钮,最后创建的按钮都会更改为“暂停”。我可以用吗index.row()以某种方式索引按钮按下进行切换?


在您的情况下,切勿在循环中创建属性self.btn_play您会指向哪个按钮?然后到最后,因此它对我们不起作用。如果该类是小部件,则可以使用 focusWidget() 或使用 sender 获取该按钮。

def populate_table(self, my_songs):
    self.tableWidget.clear()
    self.tableWidget.setColumnCount(5)
    for row, data in enumerate(my_songs):
        self.tableWidget.insertRow(self.tableWidget.rowCount())
        self.tableWidget.setItem(row, 0, QtWidgets.QTableWidgetItem(str(my_songs[row].get_title())
                                                                    .strip('"\'')))
        self.tableWidget.setItem(row, 1, QtWidgets.QTableWidgetItem(str(my_songs[row].get_artist())
                                                                    .strip('"\'')))
        self.tableWidget.setItem(row, 2, QtWidgets.QTableWidgetItem(str(my_songs[row].get_album())
                                                                    .strip('"\'')))
        self.tableWidget.setItem(row, 3, QtWidgets.QTableWidgetItem(str(my_songs[row].get_length())
                                                                    .strip('"\'')))
        btn_play = QtWidgets.QPushButton(text="Play", clicked=self.handle_play_button)
        self.tableWidget.setCellWidget(row, 4, btn_play)

@QtCore.pyqtSlot()
def handle_play_button(self):
    btn = QtWidgets.qApp.focusWidget()
    # btn = self.sender()
    if btn is not None:
        text = btn.text()
        btn.setText("Pause" if text == "Play" else "Play")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PyQt5 中按下时切换按钮文本 的相关文章

  • 创建 xyz 海拔数据的曲面图

    我正在尝试用 python 创建一座山的表面图 其中我有一些 xyz 数据 最终结果应该类似于that https i stack imgur com rKQV0 png 该文件的格式如下 616000 0 90500 0 3096 712
  • 我可以同时打开两个 Tkinter Windows 吗?

    可以同时打开2个窗口吗 import tkinter as Tk import random import math root Tk Tk canvas Tk Canvas root background image Tk PhotoIma
  • Discord.py 斜线命令在 cogs 中不起作用

    我正在构建一个不和谐的机器人 并且想要在 cogs 内使用斜杠命令 但这些命令不显示或工作 这是代码 cog guild ids 858573429787066368 861507832934563851 class Slash comma
  • DataFrame.loc 的“索引器太多”

    我读了关于切片器的文档 http pandas pydata org pandas docs stable advanced html using slicers一百万次 但我从来没有理解过它 所以我仍在试图弄清楚如何使用loc切片Data
  • 将列表值转换为 pandas 中的行

    我有数据帧 其中一列具有相同长度的 numpy ndarray 值 df list 0 Out 92 array 0 0 0 0 29273096 0 30691767 0 27531403 我想将这些列表值转换为数据框并从 df iloc
  • 尝试校准keras模型

    我正在尝试通过 Sklearn 实现来校准我的 CNN 模型CalibratedClassifierCV 尝试将其包装为KerasClassifier并覆盖预测功能但没有成功 有人可以说我做错了什么吗 这是模型代码 def create m
  • 如何在 python 中使用交叉验证执行 GridSearchCV

    我正在执行超参数调整RandomForest如下使用GridSearchCV X np array df features all features y np array df gold standard labels x train x
  • ImproperlyConfigured at / 不允许空静态前缀 - Django

    我正在使用 Django 上传 显示图像 该网站部署在 Heroku 上 下列的this https coderwall com p bz0sng教程我能够成功上传图像 但是 图像并未显示在模板中 然后我了解到我的 urls py 末尾应该
  • Pandas 中每列的曲线拟合 + 外推值

    我有一个包含大约 300 列的数据集 每一列都与深度相关 Pandas DataFrame 的简化版本看起来像这样 import matplotlib pyplot as plt import numpy as np import pand
  • 为什么 pip 已经是最新的了却要求我升级?

    我全新安装了 python 3 7 1 64 位 并使用最新的 pyCharm 作为我的 IDE 我在这台机器上没有安装其他 python 我去安装 numpy 并收到以下消息 venv C Users John PycharmProjec
  • 使用 Python-VLC 的 PyInstaller:无属性“media_player_new”错误

    我使用 Python VLC 创建视频播放器 并使用 PyInstaller 在 Windows 10 计算机上生成可执行文件 最初 它给了我错误 Import Error Failed to load dynlib dll libvlc
  • 类变量:“类列表”与“类布尔值”[重复]

    这个问题在这里已经有答案了 我不明白以下示例的区别 一次类的实例可以更改另一个实例的类变量 而另一次则不能 示例1 class MyClass object mylist def add self self mylist append 1
  • Pygame:有人可以帮我实现双跳吗?

    我知道已经有其他关于此问题的帖子了 但我的运动系统与我发现的有点不同 所以随后我问这个问题 我的运动系统基于一个名为的命名元组Move up left right down 然后就是这个 def update self move block
  • “KMeans”对象没有属性“k”

    我使用 Yellowbrick 包绘制数据集的肘部曲线 以使用 KMeans 作为模型找到数据集的最佳簇数 我正在使用 Scikit learn KMeans 和 Yellowbrick kelbowvisualizer 函数 生成了肘部曲
  • 在 4K 屏幕上使用 Matplotlib 和 TKAgg 或 Qt5Agg 后端

    我在 Ubuntu 16 04 上使用 Matplotlib 2 0 和 Python 3 6 来创建数据图 电脑显示器的分辨率为 4k 分辨率为 3840x2160 绘图数字看起来非常小 字体也很小 我已经尝试过TKAgg and Qt5
  • 如何在类型提示中定义元组或列表的大小

    有没有办法在参数的类型提示中定义元组或列表的大小 目前我正在使用这样的东西 from typing import List Optional Tuple def function name self list1 List Class1 if
  • 本地主机上的 Google App Engine GQL 查询

    我正在 Google App Engine Windows 上的 SDK 版本 1 7 0 上开发一个应用程序 我需要经常测试该应用程序 并且此测试涉及数据存储上的大量 GQL 查询 您可以在 App Engine 管理界面的浏览器中在线运
  • 为数据集生成随机 JSON 结构排列

    我想生成 JSON 结构的许多不同排列作为同一数据集的表示 最好不需要对实现进行硬编码 例如 给定以下 JSON name smith occupation agent enemy humanity nemesis neo 应该产生许多不同
  • 在自定义 keras 层的调用函数中传递附加参数

    我创建了一个自定义 keras 层 目的是在推理过程中手动更改前一层的激活 以下是基本层 它只是将激活值乘以一个数字 import numpy as np from keras import backend as K from keras
  • JSONDecodeError:额外数据:Python [重复]

    这个问题在这里已经有答案了 我使用以下代码从文件加载 json file file name obj list with open file as f for json obj in f obj list append loads json

随机推荐

  • VBS 网站登录脚本 - “需要对象”错误

    我正在尝试编写我的第一个网站登录脚本 但总是在第 9 行位置 9 处收到错误消息 需要对象 getElementByID 800A01A8 这是我的实际工作站点的代码 Call Main Function Main Set IE WScri
  • ui-router 用于仅具有特定值的路由

    我正在尝试为具有以下结构的多个独特登陆页面构建一条路线 domain com state city category 如何定义路线 以便州 城市和类别只能是预定义值之一 又名 state ca ma ak az ar i city los
  • java并发:多个写入器,一个读取器

    我需要在我的软件中收集一些统计数据 并且我正在努力使其快速且正确 这对我来说并不容易 首先是我到目前为止的代码 有两个类 一个 StatsService 和一个 StatsHarvester public class StatsServic
  • 切换 增强指针精度

    我们基本上是在创建一个控制面板小程序 我们需要在鼠标属性中切换 增强指针精度 为此 我们需要调用SystemParametersInfo with SPI GETMOUSE 它有一个包含 3 个元素的数组作为其第三个参数 我是 PInvok
  • 在正则表达式中匹配小时/分钟/秒 - 更好的方法吗?

    所以我需要从这样的条目中获取小时 分钟和秒 04 43 12 9 43 12 1 00 01 04 59 09 前两个是小时 分钟和秒 接下来是分钟和秒 最后两秒只是几秒钟 我想出了这个正则表达式 它有效 A
  • 可重复使用的方式,允许一个帐户一次由一个人使用

    我创建了一项功能 可以防止一个用户名同时多次登录 并在操作中调用它 如下所示 int userId int WebSecurity CurrentUserId if this Session SessionID dba getSession
  • Java XPathFactory 线程安全

    javax xml XPathFactory newInstance 是线程安全的吗 我这么问是因为我发现文档对此含糊不清 JDK 5 文档 http docs oracle com javase 1 5 0 docs api javax
  • Ruby on Rails Bootstrap Glyphicons 不工作

    我已将引导程序添加到我的网站 这是我正在使用的结构 我无法删除 bootstrap css 文件 因为我根据自己的喜好修改了它 gt app gt gt assets gt gt gt fonts gt gt gt gt 4 glypico
  • 如何验证函数句柄作为输入参数?

    我有一个类 它有一个函数句柄作为其之一properties classdef MyClass properties hfun function handle end methods function obj Myclass hfun PRO
  • 单击按钮标题或按钮图标后按钮事件不起作用

    我创建了一个带有标签和 向下插入符号 图标的下拉按钮 当下拉菜单打开时 下插入符 图标应该向上旋转 并且这是有效的 但是 如果我单击按钮标题或 下插入符 图标 此事件将不起作用 document ready function dropdow
  • 如何(我应该)模拟 DocumentClient 进行 DocumentDb 单元测试?

    从新的 CosmosDb 模拟器中 我得到了一个存储库来执行基本的 documentdb 操作 该存储库被注入到其他类中 我想对基本查询进行单元测试 public class DocumentDBRepository
  • 根据运输方式自定义 Woocommerce 新订单电子邮件通知 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何编辑 admin new order php WooCommerce 模板以根据运输方式有条件地发送一些自定义客户详细信息 例如 用于新
  • ServiceStack.Redis 无法读取传输 - BasicRedisClientManager

    当尝试通过 ServiceStack Redis 读取 Redis 列表时 我间歇性地收到以下错误 无法从传输连接读取数据 已建立的连接被主机中的软件中止 我想知道如何使用 ServiceStack 可靠地连接和池连接到 Redis 的整个
  • 如何在两个同级 Blazor 组件之间进行通信?

    我有一个包含两个组件的 Blazor 页面 其中一个组件有一个按钮 单击该按钮会生成一个随机数 另一个组件有一个文本区域 应显示生成的随机数 h1 Parent Page h1
  • Apache OfBiz 执行问题

    在 64 位 Win 7 计算机上使用 OfBiz 在执行全新构建后 当构建完成并且我尝试打开任何页面时 我的浏览器 IE 和 Chrome 都是空白的 有任何想法吗 OfBiz 版本 16 11 01 当前日志的片段 W Communic
  • 如何查找 Retina/4k 显示器上的显示缩放系数?

    我有一个大显示屏 在缩放模式下运行以显示更大的文本 这种缩放不会报告给我的程序 该程序是一个使用 GLFW 进行窗口化的 OpenGL 应用程序 我的所有几何体都是实际视口高度的一半大小和偏移量 这是显示问题的一组图像https i sta
  • 在 PHP 中使用 SHA1 作为登录表单

    我正在尝试制作一个简单的注册和登录表单 我想使用 SHA1 将加密的密码保存在数据库中 但是当我尝试使用密码登录时 似乎不起作用 一共有三个文件 index php register php login php 请帮我解决这个问题 索引 p
  • 从两列中选择不同的组合

    我在表 Hyperlink 中有两列 源和目标 用于存储超链接的源和目标 source destination a b b c c d c b 有两个超链接同时涉及 b 和 c 两个超链接之间的区别在于超链接的方向 然而 我的目标是检索唯一
  • 谷歌地图删除以前的路线并绘制新路线

    目前我遇到了一个问题 我使用并更改了示例 API 来绘制两点的路线 A点是当前位置 B 点是多个标记的位置之一 这些标记的创建我称之为附近搜索功能 function showInfoWindow var marker this places
  • 如何在 PyQt5 中按下时切换按钮文本

    我正在尝试使用 PyQt5 按下时更改按钮文本 我有一个已填充的表格 每行都有一个按钮 最初 该按钮应显示 播放 按下后应显示 暂停 我使用以下方法填充表格并处理按钮按下操作 def populate table self total my