问题描述
我想和this这样的wxpython建立接口 我在将webview,按钮,textview和绘图嵌入到不同面板中时遇到了问题
当我尝试将webview嵌入panel3时,它在面板右上方显示为小方块
请帮助我
import wx
import wx.html2
class MyFrame(wx.Frame):
def __init__(self,parent,ID,title):
wx.Frame.__init__(self,title)
hBox = wx.BoxSizer(wx.HORIZONTAL)
panel1 = wx.Panel(self,-1,pos=(1,1),size=(1600,50),style=wx.SUNKEN_BORDER)
panel2 = wx.Panel(self,size=(1300,500),style=wx.SUNKEN_BORDER)
panel3 = wx.Panel(self,pos=(1300,size=(300,style=wx.SUNKEN_BORDER)
panel4 = wx.Panel(self,550),style=wx.SUNKEN_BORDER)
panel1.SetBackgroundColour("BLUE") #buttons in here
panel2.SetBackgroundColour("RED") #plots in here
panel3.SetBackgroundColour("GREY") #webview in here
panel4.SetBackgroundColour("YELLOW") #textview in here
browser = wx.html2.WebView.New(panel3)
browser.LoadURL("http://www.google.com")
hBox.Add(browser,wx.EXPAND)
app = wx.App()
frame = MyFrame(None,"Sizer Test")
frame.Show()
app.MainLoop()
解决方法
您已使用Sizer
定义了SetSizer
,但尚未分配。
我认为,为了迫使它起作用,您已经在面板中添加了位置。 Sizer
/ Sizer
可以为您执行任务,因此Sizers
不再需要职位。
如果我们删除职位,分配一些合理的大小并应用Sizers
,我们会得到这个。
这可能不是您要追求的目标,但这是一个起点。
import wx
import wx.html2
class MyFrame(wx.Frame):
def __init__(self,parent,ID,title):
wx.Frame.__init__(self,title)
vbox = wx.BoxSizer(wx.VERTICAL)
hbox = wx.BoxSizer(wx.HORIZONTAL)
panel1 = wx.Panel(self,-1,size=(-1,100),style=wx.SUNKEN_BORDER)
panel2 = wx.Panel(self,style=wx.SUNKEN_BORDER)
panel3 = wx.Panel(self,400),style=wx.SUNKEN_BORDER)
panel4 = wx.Panel(self,style=wx.SUNKEN_BORDER)
panel1.SetBackgroundColour("BLUE") #buttons in here
panel2.SetBackgroundColour("RED") #plots in here
panel3.SetBackgroundColour("GREY") #webview in here
panel4.SetBackgroundColour("YELLOW") #textview in here
browser = wx.html2.WebView.New(panel3)
browser.LoadURL("http://www.duckduckgo.com")
hbox.Add(browser,proportion=1,flag=wx.EXPAND)
panel3.SetSizer(hbox)
vbox.Add(panel1,flag=wx.EXPAND)
vbox.Add(panel2,flag=wx.EXPAND)
vbox.Add(panel3,flag=wx.EXPAND)
vbox.Add(panel4,flag=wx.EXPAND)
self.SetSizer(vbox)
app = wx.App()
frame = MyFrame(None,"Sizer Test")
frame.Show()
app.MainLoop()