gpt4 book ai didi

python - wxPython:wx.PyControl 可以包含 wx.Sizer 吗?

转载 作者:太空宇宙 更新时间:2023-11-03 23:49:08 24 4
gpt4 key购买 nike

wx.PyControl 可以包含 wx.Sizer 吗?

请注意,我最终在这里尝试做的事情(具有浮点值的微调器)已经在另一个问题中得到了回答。我对在 wx.PyControl 中布局小部件特别感兴趣,如果我需要制作自己的自定义小部件,这项技能可能会很有用。我已经通读了 CreatingCustomControls ,但它没有在 wx.PyControl 子类中使用 sizer。

使用下面的代码,我的 CustomWidget 看起来不正确。我还没有做 DoGetBestSize,因为我认为这适用于 wx.Sizer 作用于 小部件。我实际上有一个 wx.Sizer内部 CustomWidget 做它的事情。

这是我的代码(没有子部件之间的事件绑定(bind)):
编辑:这是我更正的类(class)代码,感谢Steven Sproat :

import wx

class CustomWidget(wx.PyControl):
def __init__(self, parent):
wx.PyControl.__init__(self, parent=parent, style=wx.NO_BORDER) # Style added.
text = wx.TextCtrl(parent=self)
spin = wx.SpinButton(parent=self, style=wx.SP_VERTICAL)
sizer = wx.GridBagSizer()
self.layout(text, spin, sizer)
self.OnInit(text, sizer)

def OnInit(self, text, sizer):
text.SetValue(u"0.000")

def layout(self, text, spin, sizer):
self.SetSizer(sizer)
sizer.Add(text, pos=(0, 0), flag=wx.ALIGN_CENTER)
sizer.Add(spin, pos=(0, 1), flag=wx.ALIGN_CENTER)
self.Fit()
self.Layout() # This is what I lacked. I needed to call .Layout()
self.CenterOnParent()

最佳答案

是的,它可以。你只需要调用 Layout() 来告诉 sizer 重新计算/布局它的 child 。

import wx

class Frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
blah = CustomWidget(self)
self.Show(True)

class CustomWidget(wx.PyControl):
def __init__(self, parent):
wx.PyControl.__init__(self, parent=parent)
text = wx.TextCtrl(parent=self)
spin = wx.SpinButton(parent=self, style=wx.SP_VERTICAL)
sizer = wx.GridBagSizer()
self.layout(text, spin, sizer)
self.OnInit(text, sizer)

def OnInit(self, text, sizer):
text.SetValue(u"0.000")

def layout(self, text, spin, sizer):
self.SetSizer(sizer)
sizer.Add(text, pos=(0, 0), flag=wx.ALIGN_CENTER)
sizer.Add(spin, pos=(0, 1), flag=wx.ALIGN_CENTER)
self.Fit()
self.Layout()
self.CenterOnParent()

app = wx.App()
f = Frame()
app.MainLoop()

顺便说一句,如果你能像上面那样附加一个可运行的示例,那将是很好的:)

关于python - wxPython:wx.PyControl 可以包含 wx.Sizer 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3271639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com