我正在使用wxWidgets 3.0.2在OSX(Yosemite)中构建一个项目。
我可以使用wxBORDER_NONE删除wxTextCtrl窗口周围的蓝色边框。但是当我把它放在一个sizer中时,它有一个3像素的灰色边框,我无法摆脱它。有两个边界有什么意义,其中一个无法删除?当然人们想要定制更多?
有没有可能的方法将其删除?我真的不想破解wx来源,但如果必须的话,我会这样做。
或者是否存在另一种不使用sizer来控制布局的方法,而不是可能导致边框不出现?
更新:它似乎是焦点突出边框。我不想要它。
是否有任何方法可以禁用焦点UI对象周围的边框?它太令人沮丧,因为它是一件很小的事情,但是如果不能删除它,我的程序就没用了。
答案 0 :(得分:1)
如果其他人偶然发现这篇文章,这个答案是针对更新的问题:
更新:它似乎是焦点突出边框。我不想要它。
有没有办法禁用焦点UI对象周围的边框?
使用wxWidgets API,NO,无法删除它,因为它是本机NSTextField
类的行为。我只能通过编辑wx源本身来删除它,以将基础NSTextField
对象的focusRingType属性设置为NSFocusRingTypeNone:
文件: core / textctrl.mm
Func: wxWidgetImpl :: CreateTextControl
NSTextField* v = nil;
if ( style & wxTE_PASSWORD )
v = [[wxNSSecureTextField alloc] initWithFrame:r];
else
v = [[wxNSTextField alloc] initWithFrame:r];
...
// remove glow/border when textfield gets focused
[v setFocusRingType:NSFocusRingTypeNone];
我还在BORDER_NONE
上设置了wxTextCtrl
。
当然,这种改变了标准OS X的外观,所以也许这就是为什么它没有作为wxTextCtrl
API公开?或者它打破别的东西?但到目前为止,我的工作正常。另外,我的应用需要拥有自己的自定义主题,与发光边框不相符。
我正在使用wxWidgets 3.1.0(从他们的repo克隆)和OS X 10.12。
答案 1 :(得分:0)
这对我有用-在 Windows 上-:
首先 --> 将 EVT_SET_FOCUS 绑定到样式方法。
第二 --> 将 fg 和 bg 颜色重置为您的原始设计。
Python 代码:
button_1.Bind(wx.EVT_SET_FOCUS, focus_without_border)
def focus_without_border(evt=None):
element = evt.GetEventObject()
element.SetForegroundColour( wx.Colour( 241, 241, 241 ) )
element.SetBackgroundColour( wx.Colour( 40, 41, 42 ) )