wxpython多个面板_python - wxpython中三个面板网格布局中的嵌套大小调整器 - SO中文参考 - www.soinside.com...

我正在构建一个包含三个面板和2个网格(每个面板一个网格)的GUI。我正在努力使用BoxSizer将对象放入其各自的面板中。看来垂直装箱机仅考虑框架的上部和下部,而不考虑上部被分成两个面板。因此,尝试在上部垂直组织小部件时遇到问题。尝试将小部件添加到panelTwo时,垂直放置从panelOne拾取,反之亦然。如果可能的话,我想为每个面板分配一个垂直装箱机。请原谅草率的代码。我只有几天才接触Python,所以请放轻松!我愿意接受建议!这是我遇到问题的部分:p1Sizer = wx.BoxSizer(wx.VERTICAL)

p2Sizer = wx.BoxSizer(wx.VERTICAL)

p3Sizer = wx.BoxSizer(wx.VERTICAL)`

p3Sizer.Add(bottom_grid, 1, wx.EXPAND)#,pos=(200,200)

p2Sizer.Add(p1Sizer)

hbox1.Add(st1, flag=wx.ALL, border=5)

hbox1.Add(tc1, flag=wx.ALL, border=10)

hbox2.Add(st2, flag=wx.ALL, border=5)

hbox2.Add(tc2, flag=wx.ALL, border=10)

hbox3.Add(st3, flag=wx.ALL, border=5)

hbox3.Add(tc3, flag=wx.ALL, border=5)

p1Sizer.Add(hbox1,flag=wx.ALIGN_RIGHT)

p1Sizer.Add(hbox2, flag=wx.ALIGN_RIGHT)

p1Sizer.Add(hbox3, flag=wx.ALIGN_LEFT)

如果我包括这一行,则panelTwo的格式正确。参见附件。

p2Sizer.Add(0,-120)

但是我觉得这不是正确的方法。我还试图找到一种方法来创建具有不同行数的两个单独的网格。即

self.CreateGrid(100, 27)

和...

'self.CreateGrid(5,27)'

import wx

import wx.grid as gridlib

import pandas as pd

import numpy as np

class MyGrid(gridlib.Grid):

def __init__(self, parent):"""Constructor"""

gridlib.Grid.__init__(self, parent)

self.CreateGrid(100, 27)

class MasterPanel(wx.Panel):def __init__(self, parent, color):

"""Constructor"""

wx.Panel.__init__(self, parent)

self.SetBackgroundColour(color)`

class MainPanel(wx.Panel):def __init__(self, parent):`

"""Constructor"""

wx.Panel.__init__(self, parent)`

topSplitter = wx.SplitterWindow(self)

vSplitter = wx.SplitterWindow(topSplitter)

font = wx.SystemSettings.GetFont(wx.SYS_SYSTEM_FONT)

font.SetPointSize(50)

panelOne = MasterPanel(vSplitter, "light grey")

panelTwo = MasterPanel(vSplitter, "white")

panelThree = MasterPanel(topSplitter,"white")

vSplitter.SplitVertically(panelOne, panelTwo)

vSplitter.SetMinimumPaneSize(300) # 300

vSplitter.SetSashGravity(.5)

topSplitter.SplitHorizontally(vSplitter, panelThree)

topSplitter.SetMinimumPaneSize(200) #200

topSplitter.SetSashGravity(1)

#topSplitter.SetSashGravity(1)

# Assign grid to BOTTOM PANEL

bottom_grid = MyGrid(panelThree)

top_grid= MyGrid(panelTwo)st1 = wx.StaticText(panelOne, -1,"Name")

st1.SetFont(font)

st2 = wx.StaticText(panelOne, -1,"Date:")

st2.SetFont(font)

st3 = wx.StaticText(panelOne, -1,"Input #:")

st3.SetFont(font)

st4 = wx.StaticText(panelTwo, -1,"From Source:")

st4.SetFont(font)

st5 = wx.StaticText(panelTwo, -1,"Lookup:")

st5.SetFont(font)

st6 = wx.StaticText(panelTwo, -1,"Lookup Value:")

st6.SetFont(font)

tc1 = wx.TextCtrl(panelOne,size=(150,25), value="-enter name-")

tc2 = wx.TextCtrl(panelOne,size=(150,25), value="-enter date-")

tc3 = wx.TextCtrl(panelOne, value="-input item #'")

tc4 = wx.TextCtrl(panelTwo, value="-Search-")

options= ['A','B','C']

combo1 = wx.ComboBox(panelTwo,size=(150,25),value="-Choose Source-",choices=options,

style=wx.LB_SINGLE)

combo2 = wx.ComboBox(panelTwo,size=(150,25),value="-Choose Lookup Type-",choices=options,

style=wx.LB_SINGLE)

hbox1 = wx.BoxSizer(wx.HORIZONTAL)

hbox2 = wx.BoxSizer(wx.HORIZONTAL)

hbox3 = wx.BoxSizer(wx.HORIZONTAL)

hbox4 = wx.BoxSizer(wx.HORIZONTAL)

hbox5 = wx.BoxSizer(wx.HORIZONTAL)

hbox6 = wx.BoxSizer(wx.HORIZONTAL)

p1Sizer = wx.BoxSizer(wx.VERTICAL)

p2Sizer = wx.BoxSizer(wx.VERTICAL)

p3Sizer = wx.BoxSizer(wx.VERTICAL)

p3Sizer.Add(bottom_grid, 1, wx.EXPAND)#,pos=(200,200)

p2Sizer.Add(p1Sizer)

hbox1.Add(st1, flag=wx.ALL, border=5)

hbox1.Add(tc1, flag=wx.ALL, border=10)

hbox2.Add(st2, flag=wx.ALL, border=5)

hbox2.Add(tc2, flag=wx.ALL, border=10)

hbox3.Add(st3, flag=wx.ALL, border=5)

hbox3.Add(tc3, flag=wx.ALL, border=5)

p1Sizer.Add(hbox1,flag=wx.ALIGN_RIGHT)

p1Sizer.Add(hbox2, flag=wx.ALIGN_RIGHT)

p1Sizer.Add(hbox3, flag=wx.ALIGN_LEFT)

#p2Sizer.Add(0,-120)

hbox4.Add(st4, flag=wx.ALL, border=5)

hbox4.Add(combo1, flag=wx.ALL, border=5)

hbox5.Add(st5, flag=wx.ALL, border=5)

hbox5.Add(combo2, flag=wx.ALL, border=5)

hbox6.Add(st6, flag=wx.ALL, border=5)

hbox6.Add(tc4, flag=wx.ALL, border=5)

p2Sizer.Add(hbox4)

p2Sizer.Add(hbox5)

p2Sizer.Add(hbox6)

#p1Sizer.Add(p1, 2, wx.EXPAND)#,pos=(200,200)

p2Sizer.Add(top_grid, 1, wx.EXPAND)#,pos=(200,200)

panelThree.SetSizer(p3Sizer)

panelTwo.SetSizer(p2Sizer)

#panelOne.SetSizer(p1Sizer)

sizer = wx.BoxSizer(wx.VERTICAL)

#sizer.Add(top_grid)

sizer.Add(topSplitter, -1, wx.EXPAND)

#panelTwo.SetSizer(sizer)

self.SetSizer(sizer)

class MainFrame(wx.Frame):def __init__(self):

"""Constructor"""

wx.Frame.__init__(self, None, title="Hell Yeah",

size=(1600,700))

panel = MainPanel(self)

self.Show() `

if __name__ == "__main__":

app = wx.App(False)

frame = MainFrame()

app.MainLoop()'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值