1

奇妙さ:print "hi"いくつかの実験の結果、以下のコードで役に立たない行 ( 、またはx = 1) ANYWHERE を挿入すると、正しく機能するという結論に達しました。

どうしたの?この奇妙な動作を引き起こしているこのコードを Python がどのように処理しているかを理解したいと思います。

いくつかのコンテキスト: wxpython で gui を書いています。私はこの関数 (以下を参照) を持っており、ツールを押すとアイコンが変更されます (ツールを削除し、別のアイコンで再度追加することにより)。

以下に示すコードにより、最初はボタンのアイコンが正しく切り替わり、2 回目はツールバーが無効になっているように見えます。コードの問題だと思っていたので、print ステートメントを挿入したところ、驚いたことに問題が解決されました。

def configure_itunes_button(self):
    '''
    Configures the itunes button to either sync or unsync depending on whether itunes is currently synced
    '''
    if self.iTunesTool:
        id = self.iTunesTool.GetId()
        self.toolbar.DeleteTool(id)
    else:
        id = self.toolbar.GetToolsCount() + 1

    if self._is_itunes_synced_locally:
        self.iTunesTool = self.toolbar.AddSimpleTool(id, wx.Bitmap('images\\iTunes.png'), "Sync iTunes Library", "Sync all iTunes music and playlists to Sookbox.")
    else:
        self.iTunesTool = self.toolbar.AddSimpleTool(id, wx.Bitmap('images\\trash.gif'), "Stop syncing iTunes Library", "Stop syncing all iTunes music and playlists to Sookbox.")

    self.Bind(wx.EVT_TOOL, self.onITunesSync, self.iTunesTool)
    self.toolbar.Realize()
4

1 に答える 1