<p>关于你的错误,回溯表明:</p>
<blockquote>
<p><em>argument 1 has unexpected type 'QMediaContent'</em><br/></p>
</blockquote>
<p><a href="https://doc.qt.io/qt-5/qstatusbar.html#showMessage" rel="nofollow noreferrer">looking at the documentation</a>我们看到了
在</p>
<pre><code>void QStatusBar::showMessage(const QString &message, int timeout = 0)
</code></pre>
<p>它期望在python中使用<code>QString</code>或仅仅是<code>str</code>来构建一个字符串:</p>
^{pr2}$
<hr/>
<p>但是等一下,他们是更多的!<br/>
您知道不需要lambda函数来连接函数:</p>
<pre><code>self.playlist.currentMediaChanged.connect(self.songChanged) # <- no brackets
</code></pre>
<p>还有<a href="https://doc.qt.io/qt-5/qmediaplayer.html#currentMediaChanged" rel="nofollow noreferrer">^{<cd3>} does provide the current ^{<cd4>} - docs</a>:</p>
<pre><code>void QMediaPlayer::currentMediaChanged(const QMediaContent &media)
</code></pre>
<p>这意味着您可以将您的<code>songChanged</code>-函数缩小一点:</p>
<pre><code>def songChanged(self, media):
if media:
print(media)
self.statusBar().showMessage(str(media))
</code></pre>
<hr/>
<p>{6}你可以从文件名中得到</p>
<pre><code> print(media.canonicalUrl().fileName())
self.statusBar().showMessage(str(media.canonicalUrl().fileName()))
</code></pre>