如何在wxPython中修改TextCtrl的宽度?

Hub*_*bro 4 python wxpython

我正在尝试创建一个具有默认高度但自定义宽度的文本控件.这是我目前的代码:

tc = wx.TextCtrl(self, -1)
tc.Size.SetWidth(300)
Run Code Online (Sandbox Code Playgroud)

但文本控件的宽度保持不变.我也尝试tc.Layout()在更改宽度后调用没有结果.我不想在类构造函数中输入自定义大小,因为我希望它使用默认高度.我还尝试过更详细,以防tc.GetSize返回Size对象的深层副本:

tc = wx.TextCtrl(self, -1, size=(300, 23))

tc_size = tc.Size
tc_size.SetWidth(300)

tc.Size = tc_size
tc.Layout()
Run Code Online (Sandbox Code Playgroud)

也无济于事.为什么我的代码不起作用,如何使其工作?


在构造函数中设置大小有效,因此sizer与问题无关.

Hub*_*bro 9

我只是注意到我可以传递(300, -1)文本控件的大小:

wx.TextCtrl(self, -1, size=(300, -1))
Run Code Online (Sandbox Code Playgroud)

这导致文本控件使用默认高度.这解决了我的问题,但技术上没有回答我的问题,所以我坚持要求更好的答案.


编辑:这个答案加上以下评论回答了我的问题.

  • 因为在构造函数中设置since也设置了最小大小,并且它是sizer优先考虑的最小大小.如果您使用sizer并希望将大小更改为显式大小,那么最简单的方法是使用SetMinSize后跟sizer.Layout() (2认同)
  • 我认为最近为2.9.5添加了用于表示sizer中项目最大大小的代码 (2认同)