PyQt5 ComboBox 想不通

Posted

技术标签:

【中文标题】PyQt5 ComboBox 想不通【英文标题】:PyQt5 ComboBox can't figure out 【发布时间】:2017-04-14 18:03:07 【问题描述】:

美好的一天!

我上周开始学习 Python,与其他语言相比,我很惊讶它是如此简单易懂,但我无法弄清楚一件事。

我从网站上抓取了一张表格(NBA 球队最近 5 场比赛的统计数据),它每天都在更新。 该表有 30 行(30 支 NBA 球队)和 19 列(得分、篮板、盖帽等统计数据)。

I want to put 30 Team Names in ComboBox Widget and when A Team is chosen, I want it to show data of that specific team (These 19 columns).显示的数据将在 QTableWidget 中。

class Window(QWidget):
def __init__(self):
    super().__init__()
    self.initUI()

def initUI(self):

    comboStatsText = QLabel('Home Team', self)
    comboStatsText.move(15, 10)
    comboStatsBox = QComboBox(self)
    comboStatsBox.move(15, 30)


    #Combo Box Data
    comboStatsBox.addItem(name)
    comboStatsBox.addItem(name1)

我已成功进入我选择 A 团队的阶段,并且一个 tablewidget 弹出并显示数据,但如果我再次选择另一个团队,它不会改变。我已经查找了如何在激活时更改它,但我无法做到。

我用组合框的索引查找了一些东西,不明白如何实现它。会是这样吗?

如果 index(of combobox) = 1(corresponding team) then 显示该团队的数据?

我希望你能明白:/ 我真的不擅长解释事情,英语不是我的母语。任何帮助或建议将不胜感激,谢谢!!

【问题讨论】:

【参考方案1】:

您需要编写一个函数来接收来自组合框的信号以用于您的选择事件。也许是activated 信号。然后你需要清除现有的 tablewidget 并写入你的新数据。

类似这样的:

combostatsbox.activated.connect(self.load_team)

def load_team():
    self.team_table_widget.clear()
    # Set your values now

【讨论】:

谢谢,我知道了。如果每个所选团队的数据都不同怎么办?如果每个团队都有从 0 到 29 的索引,那会更容易,如果在组合框中选择索引为 0 的团队,那么我将创建一个包含特定数据的表,如您的示例中。 这就是您使用clear 方法的原因。这将清除为前一个团队加载的数据,并允许您为新选择的团队加载和填充数据。 所以我的 ComboBox 包含 30 个团队名称,如果我选择团队 #3,我需要创建一个包含团队 3 数据的表。我应该如何知道选择了哪个团队,以便我可以创建一个表我为那个团队收集的数据?啊,伙计,你可能认为我很愚蠢。 :D 您可以使用.currentText() 方法从组合框中获取团队名称。每个人都必须从某个地方开始。任何人都会给您的最佳建议是始终阅读所有内容的源代码和文档。

以上是关于PyQt5 ComboBox 想不通的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MFC C++ 中将 CString 值列表添加到 ComboBox 中? [关闭]

QT软件开发之基础控件--2.4.2 comboBox下拉框

Dojo:dojo onblur 事件

qt中控件的使用函数

如何根据第一个 GridViewComboBoxColumn 的选择填充第二个列

PyQt5-Qt DesignerQComboBox-下拉列表框