#! /usr/bin/python
#SearchCtrlProblem
import wx
class ControlPanel(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(200,200))
self.panel = wx.Panel(self, -1)
vbox = wx.BoxSizer(wx.VERTICAL)
self.panel.SetSizer(vbox)
self.DoLayout()
self.Centre()
self.Show(True)
def DoLayout(self):
vbox = self.panel.GetSizer()
self.tc = tc = wx.TextCtrl(self.panel, size = (140,-1), style=wx.TE_PROCESS_ENTER)
vbox.Add(tc, 0, wx.ALL, 15)
tc.Bind(wx.EVT_TEXT_ENTER, self.OnTextCtrl, id=tc.GetId())
self.sc = sc = wx.SearchCtrl(self.panel, size = (140,-1), style=wx.TE_PROCESS_ENTER)
sc.ShowSearchButton(True)
sc.ShowCancelButton(True)
vbox.Add(sc, 0, wx.ALL, 15)
sc.Bind(wx.EVT_TEXT_ENTER, self.OnSearchCtrl, id=sc.GetId())
self.bn = bn = wx.Button(self.panel, -1, 'Reset', (140,-1))
vbox. Add(bn, 0, wx.ALL,15)
bn.Bind(wx.EVT_BUTTON, self.OnReset, id = bn.GetId())
vbox.Layout()
self.Refresh()
def OnTextCtrl(self, evt):
value = self.tc.GetValue()
self.sc.SetValue(value)
def OnSearchCtrl(self, evt):
value = self.sc.GetValue()
self.tc.SetValue(value)
def OnReset(self, evt):
self.panel.DestroyChildren()
self.DoLayout()
app = wx.App()
ControlPanel(None, -1, '')
app.MainLoop()
私は質問を示すためにこのばかげたプログラムを書きました。+プログラムを実行するときに、検索ボックスscに入力してEnterキーを押すと、scの黒いテキストですべてOKになります。これで、テキストボックスtcを入力して、Enterキーを押すと、scのテキストはまだ黒になります。
- ただし、検索ボックスscに入力してEnterキーを押すと、scのテキストが灰色になります。その時点から、tcと入力してEnterキーを押すと、scのテキストは常に灰色になります。
注:入力を開始する前に、[リセット]ボタンを押してレイアウトをリセットできます。この問題は、Linux RedHat 4.5.1-3、Python2.7で発生しました。Mac OS X 10.8、Python 2.7.2でこれを試したところ、この問題は発生しませんでした。
SearchCtrlのテキストを常に黒にするにはどうすればよいですか?