0

wxWidgets のドキュメントを見ると、Windows でのみ wxMenuItem オブジェクトのテキストの色を設定できるはずです。私はWindowsを使用しています。

wxPython でコーディングしてこれを達成しようとすると、メニュー項目のテキストの色が変更されないだけでなく、同じメニュー内のこのメニュー項目に続くメニュー項目が 1 文字インデントされることに気付きます。本当に奇妙です。テキストの色を設定するディレクティブを削除すると、2 つのメニュー項目が期待どおりに並べられます。

だからここに私のコードがあります。コードに間違いは見当たりませんが、インデントは何かが起きている兆候だと確信しているため、おそらく何かがあるのでしょう。

menu = wx.Menu()
colour = (255,0,0) # like the text to be red
m_cluster = menu.Append(-1, "&Cluster\tAlt-C", "Cluster Options.")
m_cluster.SetTextColour(colour) # remembered to spell color with u
self.Bind(wx.EVT_MENU, self.OpenClusterDialog, m_cluster)
m_data = menu.Append(-1, "Data Source", "Set Data Source Information")
self.Bind(ex.EVT_MENU, self.OpenDataSourceDialog, m_data)
menuBar.Append(menu, "&Options") # menu bar previously defined

wxversion.py2.8-msv-unicodeインストールしたレポート

4

1 に答える 1

1

コードをいじってみたところ、メニュー項目がまだメニューに追加されていない場合にのみ色が適用されることに気付きました。したがって、代わりにmenu.Append(...)、次のことを行う必要があります。

m_cluster = wx.MenuItem(menu, -1, "&Cluster\tAlt-C", "Cluster Options.")
m_cluster.SetTextColour(colour)
menu.AppendItem(m_cluster)

私はwx 2.9なのでYMMVです。インデントの問題に気づきませんでしたが、これもバージョンに関連している可能性があります。

赤のメニュー項目

于 2012-11-21T08:10:36.783 に答える