gpt4 book ai didi

python - pyside 代码行 'combo.activated[str].connect(self.onActivated)' 中括号的含义是什么?

转载 作者:太空狗 更新时间:2023-10-30 03:01:57 27 4
gpt4 key购买 nike

pyside tutorial 中我在 QtGui.QComboBox 示例中看到以下行:

combo.activated[str].connect(self.onActivated)  

表达式 [str] 在这种情况下是什么意思?这既没有在示例中解释,也没有在 pyside documentation 上解释。 .也来自原始Qt documentation尚不清楚表达式 [str] 的实际含义。

我很清楚索引列表和字典,但在给定的上下文中,似乎一个类方法被索引了。

最佳答案

这里,activated 是一个重载信号[str] 是对 str 类型的索引过载。

信号重载的原因与在 C++ 中认为函数重载的原因相同:有两个函数具有相同的名称,采用不同的参数:

void QComboBox::activated ( int index ) [signal]
void QComboBox::activated ( const QString & text ) [signal]

Python 没有 C++ 所具有的强类型函数重载。因此,PyQt 通过拥有一个可以连接的槽字典来处理这个问题。该字典的关键是您的句柄将接受的参数的类型

页面上的这个例子wastl linked to描述得很好:

from PyQt4.QtGui import QComboBox

class Bar(QComboBox):

def connect_activated(self):
# The PyQt4 documentation will define what the default overload is.
# In this case it is the overload with the single integer argument.
self.activated.connect(self.handle_int)

# For non-default overloads we have to specify which we want to
# connect. In this case the one with the single string argument.
# (Note that we could also explicitly specify the default if we
# wanted to.)
self.activated[str].connect(self.handle_string)

def handle_int(self, index):
print "activated signal passed integer", index

def handle_string(self, text):
print "activated signal passed QString", text

进一步阅读:

关于python - pyside 代码行 'combo.activated[str].connect(self.onActivated)' 中括号的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23847288/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com