在python wx小部件中更改单元格大小

时间:2014-04-28 23:57:36

标签: python widget wxpython

我有以下代码

def create_gui(self):

    main_sizer = wx.GridBagSizer()

    self.main_txt = wx.TextCtrl(self ,-1, value="", style=wx.TE_MULTILINE)
    main_sizer.Add(self.main_txt,(1,0),(10,10),wx.EXPAND) 

    self.input_txt = wx.TextCtrl(self ,-1, value="", style=wx.TE_MULTILINE)
    main_sizer.Add(self.input_txt,(12,0),(5,1),wx.EXPAND) 


    main_sizer.AddGrowableCol(0)
    main_sizer.AddGrowableRow(0)

    self.SetSizerAndFit(main_sizer)
    self.SetSizeHints(600,500,750,650) 
    self.Fit()
    self.Show(True)

问题是我根本无法控制细胞的大小。除此之外我做的任何事都会导致混乱。我目前正在尝试更改input_txt的宽度,但是1太大而2或更多只加起来几毫米(如果不是)。我对Tkinter很熟悉,但WX似乎太复杂了,没有充分的理由。如果有更简单的方法,请告诉我(例如boxsizer),欢迎提出所有建议。

1 个答案:

答案 0 :(得分:0)

如果您希望在调整窗口大小时调整控件大小,那么您将需要使用sizer。如果你不关心它,你可以使用绝对定位并自己设置小部件的大小。

我个人使用wx.BoxSizers几乎我在wxPython中所做的一切。当我有一个复杂的布局时,我将其绘制出来并绘制框以帮助我更好地想象如何嵌套框大小调整器。当窗口小部件位于sizer中时,sizer将管理窗口小部件的大小。因此,除了说明与其他大小调整器相比有多大(即比例值)之外,你无法控制它。

这是一个简单的例子:

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(myWidget, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
sizer.Add(myOtherWidget, proportion=0, flag=wx.ALL, border=5)

此示例告诉wxPython使第一个窗口小部件尽可能大,而不会覆盖任何其他窗口小部件。如果这个小部件是一个按钮,你会看到一个按钮占据了框架的90%或更多,其下面是另一个小部件。如果你想让两个小部件的大小相同,你可以给它们相同的比例。您还需要传递wx.EXPAND标志,以便它们可以正确扩展。

我希望这会有所帮助。