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下拉框