python - 我对 wxpython 中的面板有疑问
问题描述
我想用 wxpython 做一个这样的界面我 有关于在不同面板中嵌入 webview、按钮、textview 和绘图的问题
当我尝试在 panel3 中嵌入 webview 时,它在面板右上角显示为小方块
请帮我
import wx
import wx.html2
class MyFrame(wx.Frame):
def __init__(self, parent, ID, title):
wx.Frame.__init__(self, parent, ID, 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,-1 , pos=(1,50),size=(1300,500), style=wx.SUNKEN_BORDER)
panel3 = wx.Panel(self,-1 , pos=(1300,50),size=(300,500), style=wx.SUNKEN_BORDER)
panel4 = wx.Panel(self,-1 , pos=(1,550),size=(1600,500), 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, -1, "Sizer Test")
frame.Show()
app.MainLoop()
解决方案
您已经定义了 aSizer
但尚未分配它,使用SetSizer
.
我认为,为了强制它工作,您已经包含了面板的位置。ASizer
消除了拥有职位的需要,因为Sizer
/Sizers
为您执行该任务。
如果我们删除位置,分配一些合理的大小并应用Sizers
,我们得到这个。
这可能不是你所追求的,但它是一个起点。
import wx
import wx.html2
class MyFrame(wx.Frame):
def __init__(self, parent, ID, title):
wx.Frame.__init__(self, parent, ID, 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,-1 , size=(-1,100), style=wx.SUNKEN_BORDER)
panel3 = wx.Panel(self,-1 , size=(-1,400), style=wx.SUNKEN_BORDER)
panel4 = wx.Panel(self,-1 , size=(-1,100), 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, -1, "Sizer Test")
frame.Show()
app.MainLoop()
推荐阅读
- dynamics-crm - 从 CRM 上传到 CosmosDB 时出现分区错误
- r - 根据 R 中的特定变量选择不同的条目
- wordpress - NGINX SSL 反向代理上的 WordPress Docker 无法按预期工作
- node.js - 找不到命令:ts-node-dev
- python - 如何将 Lat Lon 坐标的 Pandas DataFrame 转换为矩阵?(Python)
- java - Java 数组声明为 null
- swift - 如何使用 AVFoundation 在 Mac OS swift 中将速度或时间信息发送到 AVAudioUnitMIDIInstrument
- emacs - 如何配置 auto-dim-other-buffers 以使行号列变暗?
- asp.net-core - Host Asp.net Core Web Api locally
- java - 从列表中动态创建 Tablayout 中的选项卡?