我不确定我应该如何调整尺寸,我一直在尝试使用sizer,但似乎我一直在做错事。
基本上我有这个代码:
self.button = wx.Button(self, label="Create New", pos=(25,250))
我想用它一个sizer。所以它会一直调整它的位置到窗口。初始起始位置为25,250。初始窗口的高度为400。 我希望按钮根据窗口的变化进行调整。
谢谢,如果您有任何问题或需要澄清,请发表评论。
答案 0 :(得分:0)
这里有一个wxglade自动生成的代码,展示了如何使用wx.BoxSizer
。
它只是一个带有面板小部件的框架。您可以使用按钮更改面板,它将完美地工作。我们的想法是,您可以为wx.Panel
中的其他小部件添加:
sizer_2.Add(self.panel_1, 1, wx.EXPAND, 0)
这会使您的小部件排成一排。如果您想要另一个处置,您可以使用不同的sizer,您还可以将带有小部件的sizer添加到其他sizer。 sizer.Add()中的参数确定sizer的边框和行为。您应该检查wxPython / wxglade文档。无论如何,结构总是如下所示:
import wx
# begin wxGlade: extracode
# end wxGlade
class MyFrame1(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame1.__init__
kwds["style"] = wx.CLOSE_BOX|wx.SYSTEM_MENU| wx.CAPTION
wx.Frame.__init__(self, *args, **kwds)
self.panel_1 = wx.Panel(self, -1)
------ create other widgets here ------
self.__set_properties()
self.__do_layout()
# end wxGlade
def __set_properties(self):
# begin wxGlade: MyFrame1.__set_properties
self.SetTitle("frame_2")
self.SetMinSize((300,200))
# end wxGlade
def __do_layout(self):
# begin wxGlade: MyFrame1.__do_layout
sizer_2 = wx.BoxSizer(wx.VERTICAL)
sizer_2.Add(self.panel_1, 1, wx.EXPAND, 0)
------ add other widgets or even sizers to the sizer here ------
self.SetSizer(sizer_2)
sizer_2.Fit(self)
self.Layout()
# end wxGlade
# end of class MyFrame1
if __name__ == "__main__":
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
frame_1 = MyFrame1(None, -1, "")
app.SetTopWindow(frame_1)
frame_1.Show()
app.MainLoop()