wxPython:如何将一个面板放在另一个上面
这段内容是关于wxPython的。
我想要有两个面板,一个在另一个上面:
PanelBG
应该是某种“背景”,它有自己的GridBagSizer,里面可以放一些子面板、静态文本等等;
PanelFG
应该是“前景”面板,同样也有自己的GridBagSizer,里面可以放一些静态文本、按钮……但是背景是透明的,这样的话,PanelBG
就能在PanelFG
没有放置控件的地方显示出来。
我需要这两个面板在窗口的每一边都能拉伸,即使在调整窗口大小的时候,也要保持它们之间的比例不变,所以我不太确定是否可以使用绝对定位。
如果你在想,为什么我不想用一个面板,原因是合并两个GridBoxSizers会让我需要在布局中放置更多的单元格,因为前景和背景的行列并不总是对齐,我需要把它们分成很多单元格,网格的维度可能会达到几百乘几百。
由于我想放在前景的内容需要经常更新和刷新,这样每次都需要重绘所有单元格,这个过程可能需要10到20秒(测试过)。而只更新前景的话,只需要几毫秒就能完成。
谢谢!
2 个回答
我理解的意思是,这其实是一个日历,每一天用一个矩形框表示,里面包含当天的事件。
最简单的方法就是用一个叫做wxGrid的工具,创建七列和四到五行,来表示一个月。然后你可以把事件放到对应日期的格子里。wxGrid这个组件会自动处理好所有的更新和刷新。
不过,使用wxGrid的话,你可能会对外观的具体细节失去一些控制权。虽然一旦你掌握了它的很多功能,wxGrid是非常灵活和强大的,但这样做可以省去你写大量代码的麻烦,而这些代码往往需要花费很多精力去调试。
这可能算是一种方向上的改变,但值得看看你还有哪些其他的渲染选项。
特别是,我在想wxWebKit(http://wxwebkit.kosoftworks.com/),它可以让你使用WebKit浏览器的渲染引擎来进行图层处理等等。我不太确定它是否已经成熟到可以满足你所有需求,因为我自己没有用过。不过,即使它不完全合适,这也可能是一个值得尝试的方法——你可以用HTML/CSS来处理部分显示,同时把整个内容放在一个wxPython应用里。