【发布时间】:2018-07-03 22:19:12
【问题描述】:
我正在尝试使用以下布局创建一个 gui:
顶部面板将包含三个数字,三个中间面板将包含文本框,底部面板将包含一些按钮
这是我目前所拥有的:
import wx
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.figure import Figure
from mpl_toolkits.mplot3d import Axes3D
import gui_functions as gf
class MainWindow(wx.Frame):
def __init__(self, parent, id, title = "Test GUI"):
wx.Frame.__init__(self, parent, wx.ID_ANY, title = "MyTitle", size=(1200,1000))
self.graphicsPanel = wx.Panel(self,-1,style=wx.CLIP_CHILDREN)
self.textPanel = wx.Panel(self)
self.buttonsPanel = wx.Panel(self)
self.graphicsPanel.figure = Figure()
self.graphicsPanel.canvas = FigureCanvas(self.graphicsPanel, -1, self.graphicsPanel.figure)
self.axeshandleA = self.graphicsPanel.figure.add_subplot(131, projection='3d',facecolor='#f3f3f3')
self.axeshandleB = self.graphicsPanel.figure.add_subplot(132, projection='3d',facecolor='#f3f3f3')
self.axeshandleC = self.graphicsPanel.figure.add_subplot(133, projection='3d',facecolor='#f3f3f3')
if __name__ == '__main__':
app = wx.App(False)
app.frame = MainWindow(None, wx.ID_ANY)
app.frame.Show()
app.MainLoop()
我假设我需要从三个面板开始,我必须以某种方式垂直对齐。
我正在考虑在中间面板中然后我需要添加三个额外的面板并将它们水平对齐
我的大脑正在思考如何在 HTML 和 CSS 中构建 div 框。
我的第一个问题是我不知道如何让面板 a) 填充父级和 b) 垂直对齐。
其次,我正在使用 Spyder。为什么每次调用 gui 后我都必须启动一个新控制台?如果我不这样做,那么我会收到错误
必须先创建 wx.App 对象!
我真的很感激任何帮助,因为我被困住了!非常感谢
我正在运行 wxPython 4.0.0rc1.dev3617+346e3b7 和 Python 3.5.4
【问题讨论】:
-
使用wxglade
-
我已经接近尾声了,我只需要弄清楚如何设置按钮的间距和大小,所以我在buttonsPanel 左侧有一个,中间一个,右侧一个。我有点明白了,但是按钮很大!当我弄清楚时,我会发布我的答案
-
wxformbuilder 非常适合快速构建 UI github.com/wxFormBuilder/wxFormBuilder