- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
#! /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 中输入 sc 然后按回车键,sc 中的黑色文本一切正常。现在,我可以在文本框中输入 tc 然后按回车键,sc 中的文本仍然是黑色
注意:在开始输入之前,您可以通过按“重置”按钮来重置布局。问题发生在 Linux RedHat 4.5.1-3,Python 2.7 上。当我在 Mac OS X 10.8、Python 2.7.2 上尝试这个时,这个问题没有发生。
如何使 SearchCtrl 中的文本始终为黑色?
最佳答案
这是一个 bug在 wxWidgets 2.8.12
中。
当文本与提示文本匹配时,控件只有在获得焦点时才会将文本颜色设置为黑色(当控件为空时显示灰色文本)。
要在不升级到 never 版本的情况下解决此问题,您必须在更改其文本之前聚焦控件:
wnd = self.FindFocus() # get currently focused window
self.sc.SetFocus() # trigger the color update (if needed)
self.sc.SetValue(value)
if wnd: wnd.SetFocus() # restore previous focus
else: self.SetFocus() # set focus to frame if none was set
要从 wxSearchCtrl 中删除文本并恢复灰色提示文本,只需调用 Clear()
即可(无论如何在 2.8.12 中)。
该错误已在最新的开发版本 (2.9.4
) 中修复。但是,清除文本不会恢复提示文本。
在 OS X 10.3
及更高版本上,使用的 native 搜索控件不会出现此行为。
关于linux - 如何使wxpython中wxsearchctrl中的文本不灰显?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13754538/
经过很长时间的尝试,我仍然找不到解决问题的正确方法。问题是将这个灰度图像分割成 3 种不同的颜色:边界应该是黑色,边界的内部空间应该是白色,所有其他介质应该是黑色。 我尝试了几种不同的方法,包括直接强
这个问题在这里已经有了答案: What is the difference between "./somescript.sh" and ". ./somescript.sh" (4 个答案) 关闭
我是一名优秀的程序员,十分优秀!