当用户单击 wxTextCtrl 时是否有一种简单的方法来处理?阅读文档wxTextCtrl后,我发现没有单击或双击事件。我从问题wxWidgets:检测自定义控件上的单击事件中了解到 wxWidgets 中没有“单击”事件之类的东西,因此一个简单的鼠标按下事件就可以了。
示例答案:
来自:wx 维基
textCtrl->Connect(wxEVT_LEFT_DOWN,
wxMouseEventHandler(MyClass::OnClick), NULL, this );
Run Code Online (Sandbox Code Playgroud) 我有一个我在wxPython中开发的应用程序.部分应用程序在网格中创建大量TextCtrls,以便为一个任意大的人员列表输入一周中每一天的四个字母代码.
我已经设法使它工作,但我必须做一些kludgy.具体来说,我还没有找到一个很好的方法来计算出一些文本的大小(以像素为单位),因此我必须猜测TextCtrls的大小以便恰好适合最大的(4个字母)代码.我担心的是,如果要更改文本的大小,或者将应用程序移植到MSW以外的其他内容,那么我的布局可能会中断.
我找到的解决方案是创建一个StaticText对象,用4个大字母填充它,得到它的大小,然后是.Destroy()它.这可行,但它看起来真的是一个笨重的解决方案.有没有人有更直接的方法来确定TextCtrl中任意文本字符串的大小?我查看了文档并且找不到任何内容,而且我没有看到任何正如我正在尝试做的那样的例子.
下面是一个小代码示例(显示测试方法):
# This creates and then immediately destroys a static text control
# in order to learn how big four characters are in the current font.
testst = wx.StaticText(self, id = wx.ID_ANY, label = "XXXX")
self.fourlettertextsize = testst.GetClientSize() + (4,4)
testst.Destroy()
Run Code Online (Sandbox Code Playgroud)
(+(4,4)部分是在控件中添加一点空间以容纳光标和TextCtrl的客户区域中的一个小边框;这是我不想直接做的另一件事.)
我正在与我的 wxTextCtrl 解决一个烦人的问题。无论我尝试什么,都无法添加新行。wxTextCtrl 显示一个方形字符而不是一个新行。
这是相关的代码:
wxTextCtrl * detail = new wxTextCtrl (this,wxID_ANY);
detail->SetWindowStyle(wxTE_MULTILINE);
detail->SetEditable(false);
detail->AppendText("Some text");
detail->AppendText("\n New line");
detail->AppendText("\n An other new line\n");
detail->AppendText("Again a new line");
Run Code Online (Sandbox Code Playgroud)
我得到:
一些文字◻◻换行◻◻换行◻◻换行◻◻再换行
首先我认为Multiline属性有问题但detail->IsMultiLine()返回true
任何帮助将不胜感激,
我正在使用wxPython中的多个wx.Choice控件,并且我需要使用“重置”按钮来单击时恢复默认选项“-选择-”。无法实现这一点,我最近来的就是将其重置为空选项,这不是我们想要的。我希望按下重置按钮时出现默认选项“-选择-”。请参阅下面的代码。
data.py
import wx
class MyFrame1 ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 250,300 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.SYSTEM_MENU|wx.TAB_TRAVERSAL )
self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
DataBox = wx.BoxSizer( wx.HORIZONTAL )
gSizer2 = wx.GridSizer( 0, 2, 0, 0 )
self.Color_Label = wx.StaticText( self, wx.ID_ANY, u"Color:", wx.DefaultPosition, wx.DefaultSize, 0 )
self.Color_Label.Wrap( -1 )
self.Color_Label.SetFont( wx.Font( 13, 70, 90, 90, False, wx.EmptyString ) )
gSizer2.Add( self.Color_Label, 0, wx.ALL, …Run Code Online (Sandbox Code Playgroud)