擅长:python、mysql、java
<p>这将显示一个带有单个选项的简单弹出窗口,该窗口在单击时调用<code>clicked</code>函数:</p>
<pre><code>from PySide2.QtGui import QCursor
from PySide2.QtWidgets import QApplication, QMenu
def clicked():
print("CLICKED")
if __name__ == '__main__':
app = QApplication()
menu = QMenu()
menu.addAction("Click me", clicked)
menu.exec_(QCursor().pos())
</code></pre>
<p>或者,如果仍要使用<code>QAction</code>,请将其定义移到外部:</p>
<pre><code>from PySide2.QtGui import QCursor
from PySide2.QtWidgets import QApplication, QMenu, QAction
def clicked():
print("CLICKED")
if __name__ == '__main__':
app = QApplication()
menu = QMenu()
action = QAction("&Click me", triggered=clicked)
menu.addAction(action)
menu.exec_(QCursor().pos())
</code></pre>
<p>正如<a href="https://stackoverflow.com/users/984421/ekhumoro">ekhumoro</a>在下面的评论中指出的:</p>
<blockquote>
<p>Qt does not take ownership of actions added via addAction. You must
keep an explicit reference to them, otherwise they will get
garbage-collected.</p>
</blockquote>
<p>注意我使用的是<code>PySide2</code>,但它不应该改变任何东西。你知道吗</p>