2014-01-08 112 views
1

爲什麼下面的代碼創建一個瀏覽器對象佔用整個窗口?我希望瀏覽器對象只佔用一定的空間,比如wx中的文本框或按鈕。wxPython瀏覽器大小

import wx 
import wx.html2 

app = wx.App() 
frame = wx.Frame(None, -1, "yo", (1,1), (800,600)) 
browser = wx.html2.WebView.New(frame, -1, "http://www.google.com/", (0,50), (500,500)) 
browser.LoadURL("http://www.google.ca") 
frame.Show() 
app.MainLoop() 

回答

1

wxFrame的一個特點是,如果它只有一個子窗口框架的EVT_SIZE處理程序將自動調整大小和位置也使得其填充框架的客戶區。如果你想要阻止或者有其他的大小調整行爲,那麼你可以爲框架實現你自己的EVT_SIZE事件處理程序。其他選項是使用wx.Sizer,或者,如已經建議的那樣,使用wx.Panel作爲框架的唯一子節點,並使WebView成爲面板的子節點。

+0

謝謝羅賓。我愛你的工作。 – User

0

將瀏覽器放到面板中,然後將面板放在框架(父級)中。瀏覽器將使用整個面板。

panel = wx.Panel(frame, -1, (100,100), (100,100)) 
0

試試這個代碼

import wx 
import wx.html2 


class MyWindow(wx.Frame): 
    def __init__(self, url, *args, **kwargs): 
     super(MyWindow, self).__init__(*args, **kwargs) 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     label = wx.StaticText(self, wx.ID_ANY, "Hi, this is a label") 
     sizer.Add(label) 
     browser = wx.html2.WebView.New(self, wx.ID_ANY, url, (0, 50), (500, 500)) 
     sizer.Add(browser) 
     browser.LoadURL(url) 


app = wx.App() 
frame = MyWindow("http://www.google.com/", None, wx.ID_ANY, 
       "yo", (1, 1), (800, 600)) 
frame.Show() 
app.MainLoop()