无法获取 wx.TextCtrl 内容以在调整大小时重新居中
trouble getting wx.TextCtrl contents to re-center on resize
我有一个样式为 wx.TE_CENTRE 的 TextCtrl,当我调整 TextCtrl 大小时,我 want/expect 其内容保持居中。但是,文本保留在 TextCtrl 的左侧。
import wx
class MyApp(wx.App):
def OnInit(self):
frame = wx.Frame(None)
frame.Show(True)
self.SetTopWindow(frame)
self.myText = wx.TextCtrl(frame, value="A", style=wx.TE_CENTRE)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.myText, wx.EXPAND)
frame.SetSizer(sizer)
sizer.Fit(frame)
self.Bind(wx.EVT_SIZE, self.OnSize)
return True
def OnSize(self, evt):
self.myText.SetValue("after resize")
myApp = MyApp(0)
myApp.MainLoop()
经过大量试验和错误后,我通过执行以下两个 来让它工作:
- 在我的 wx.EVT_SIZE 处理程序中刷新 TextCtrl
- 将样式 wx.TE_RICH 添加到 TextCtrl
为什么这两个都是必要的?我想了解我在这里做错了什么。
(我在 Win7 上使用 wxPython 4.0.4。)
可能是你的环境,使用wx 4.0.4
在Linux上肯定能正常工作
这可能是因为您在 wx.App
class.
内完成所有操作
按照惯例,这段代码应该写成这样:
import wx
class MyFrame(wx.Frame):
def __init__(self,parent):
wx.Frame.__init__(self,parent,-1,("My Frame"), size=(200,100))
self.myText = wx.TextCtrl(self, value="A", style=wx.TE_CENTRE)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.myText, wx.EXPAND)
self.SetSizer(sizer)
self.Show()
myApp = wx.App()
frame = MyFrame(None)
myApp.MainLoop()
这段代码是否以同样的方式出现错误?
我有一个样式为 wx.TE_CENTRE 的 TextCtrl,当我调整 TextCtrl 大小时,我 want/expect 其内容保持居中。但是,文本保留在 TextCtrl 的左侧。
import wx
class MyApp(wx.App):
def OnInit(self):
frame = wx.Frame(None)
frame.Show(True)
self.SetTopWindow(frame)
self.myText = wx.TextCtrl(frame, value="A", style=wx.TE_CENTRE)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.myText, wx.EXPAND)
frame.SetSizer(sizer)
sizer.Fit(frame)
self.Bind(wx.EVT_SIZE, self.OnSize)
return True
def OnSize(self, evt):
self.myText.SetValue("after resize")
myApp = MyApp(0)
myApp.MainLoop()
经过大量试验和错误后,我通过执行以下两个 来让它工作:
- 在我的 wx.EVT_SIZE 处理程序中刷新 TextCtrl
- 将样式 wx.TE_RICH 添加到 TextCtrl
为什么这两个都是必要的?我想了解我在这里做错了什么。 (我在 Win7 上使用 wxPython 4.0.4。)
可能是你的环境,使用wx 4.0.4
在Linux上肯定能正常工作
这可能是因为您在 wx.App
class.
内完成所有操作
按照惯例,这段代码应该写成这样:
import wx
class MyFrame(wx.Frame):
def __init__(self,parent):
wx.Frame.__init__(self,parent,-1,("My Frame"), size=(200,100))
self.myText = wx.TextCtrl(self, value="A", style=wx.TE_CENTRE)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.myText, wx.EXPAND)
self.SetSizer(sizer)
self.Show()
myApp = wx.App()
frame = MyFrame(None)
myApp.MainLoop()
这段代码是否以同样的方式出现错误?