wxPython html2.WebView和垂直滚动条

wxPython html2.WebView和垂直滚动条,webview,wxpython,scrollbar,vertical-scrolling,wx.html2,Webview,Wxpython,Scrollbar,Vertical Scrolling,Wx.html2,我已经阅读了几乎所有我能在互联网上找到的解决这个问题的方法,但没有办法找到答案 所以我会在这里发帖。我希望我的新闻在gridbagsizer中有一个垂直滚动条 我试着把它放在wxscrolledWindow和其他很多东西上,没有办法得到这个VScroll 也许我应该把它连接到gridbagsizer上,但我不知道如何 下面是我的问题的一个例子: import wx import wx.html2 from os import getcwd import wx.media class MyFr

我已经阅读了几乎所有我能在互联网上找到的解决这个问题的方法,但没有办法找到答案

所以我会在这里发帖。我希望我的新闻在gridbagsizer中有一个垂直滚动条

我试着把它放在wxscrolledWindow和其他很多东西上,没有办法得到这个VScroll

也许我应该把它连接到gridbagsizer上,但我不知道如何

下面是我的问题的一个例子:

import wx
import wx.html2
from os import getcwd
import wx.media


class MyFrame(wx.Frame):
      def __init__(self, parent, id, title):
          wx.Frame.__init__(self, None, id, u"PC GAMES Updater/Launcher V2.0 By -Fawn-", wx.DefaultPosition, wx.Size(1280, 650),style=wx.MINIMIZE_BOX|wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)

        ImgDir = (getcwd()+u"\\img\\fond.jpg")
        fond = wx.Image(ImgDir, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        self.bg = wx.StaticBitmap(self, -1, fond)

        self.browser = wx.html2.WebView.New(self.bg,-1,size=(370,200))
        self.browser.LoadURL("http://utrem.tf/www/news.html")

        #Sizer news
        gbox7 = wx.GridBagSizer(1,1)
        gbox7.SetEmptyCellSize((10,10))
        gbox7.Add(self.browser,(0,0))

        #NEWS
        box7= wx.StaticBox(self, -1, "NEWS")
        bsizer7 = wx.StaticBoxSizer(box7, wx.HORIZONTAL)
        sizerH7 = wx.BoxSizer(wx.VERTICAL)
        sizerH7.Add(gbox7, 0, wx.ALL|wx.CENTER, 10)
        bsizer7.Add(sizerH7, 1, wx.EXPAND, 0)

        vSizer3 = wx.BoxSizer(wx.VERTICAL,)
        vSizer3.Add(bsizer7, 0,wx.ALL|wx.EXPAND, 10)

        hmainSizer=wx.BoxSizer(wx.HORIZONTAL)
        hmainSizer.Add(vSizer3, 0,wx.ALL|wx.EXPAND, 10)

        vmainSizer=wx.BoxSizer(wx.VERTICAL)
        vmainSizer.Add(hmainSizer, 0,wx.ALL|wx.EXPAND, 10)

        self.SetSizer(vmainSizer)

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, None)
        frame.Show(True)
        frame.Centre()
        return True

if __name__=='__main__':    

    app = MyApp(0)
    app.MainLoop()
注:我必须保持我的“新闻”尺寸(370200)


如果有人能帮我解释一下我做错了什么,那就谢谢了。

好吧,这完全是因为HTML页面的代码,现在工作正常了

在询问源代码后,我重新编码了HTML页面,结果如下:

import wx
import wx.html2
from os import getcwd
import wx.media


class MyFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, None, id, u"PC GAMES Updater/Launcher V2.0 By -Fawn-", wx.DefaultPosition, wx.Size(1280, 650),style=wx.MINIMIZE_BOX|wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)

        ImgDir = (getcwd()+u"\\img\\fond.jpg")
        fond = wx.Image(ImgDir, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        self.bg = wx.StaticBitmap(self, -1, fond)

        self.browser = wx.html2.WebView.New(self.bg,-1,size=(370,200))
        self.browser.LoadURL("http://ninjaaior.free.fr/2505/news.html")

        #Sizer news
        gbox7 = wx.GridBagSizer(1,1)
        gbox7.SetEmptyCellSize((10,10))
        gbox7.Add(self.browser,(0,0))

        #NEWS
        box7= wx.StaticBox(self, -1, "NEWS")
        bsizer7 = wx.StaticBoxSizer(box7, wx.HORIZONTAL)
        sizerH7 = wx.BoxSizer(wx.VERTICAL)
        sizerH7.Add(gbox7, 0, wx.ALL|wx.CENTER, 10)
        bsizer7.Add(sizerH7, 1, wx.EXPAND, 0)

        vSizer3 = wx.BoxSizer(wx.VERTICAL,)
        vSizer3.Add(bsizer7, 0,wx.ALL|wx.EXPAND, 10)

        hmainSizer=wx.BoxSizer(wx.HORIZONTAL)
        hmainSizer.Add(vSizer3, 0,wx.ALL|wx.EXPAND, 10)

        vmainSizer=wx.BoxSizer(wx.VERTICAL)
        vmainSizer.Add(hmainSizer, 0,wx.ALL|wx.EXPAND, 10)

        self.SetSizer(vmainSizer)

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, None)
        frame.Show(True)
        frame.Centre()
        return True
 
if __name__=='__main__':    
 
    app = MyApp(0)
    app.MainLoop()

好吧,这完全是因为HTML页面的代码,现在运行良好

在询问源代码后,我重新编码了HTML页面,结果如下:

import wx
import wx.html2
from os import getcwd
import wx.media


class MyFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, None, id, u"PC GAMES Updater/Launcher V2.0 By -Fawn-", wx.DefaultPosition, wx.Size(1280, 650),style=wx.MINIMIZE_BOX|wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)

        ImgDir = (getcwd()+u"\\img\\fond.jpg")
        fond = wx.Image(ImgDir, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        self.bg = wx.StaticBitmap(self, -1, fond)

        self.browser = wx.html2.WebView.New(self.bg,-1,size=(370,200))
        self.browser.LoadURL("http://ninjaaior.free.fr/2505/news.html")

        #Sizer news
        gbox7 = wx.GridBagSizer(1,1)
        gbox7.SetEmptyCellSize((10,10))
        gbox7.Add(self.browser,(0,0))

        #NEWS
        box7= wx.StaticBox(self, -1, "NEWS")
        bsizer7 = wx.StaticBoxSizer(box7, wx.HORIZONTAL)
        sizerH7 = wx.BoxSizer(wx.VERTICAL)
        sizerH7.Add(gbox7, 0, wx.ALL|wx.CENTER, 10)
        bsizer7.Add(sizerH7, 1, wx.EXPAND, 0)

        vSizer3 = wx.BoxSizer(wx.VERTICAL,)
        vSizer3.Add(bsizer7, 0,wx.ALL|wx.EXPAND, 10)

        hmainSizer=wx.BoxSizer(wx.HORIZONTAL)
        hmainSizer.Add(vSizer3, 0,wx.ALL|wx.EXPAND, 10)

        vmainSizer=wx.BoxSizer(wx.VERTICAL)
        vmainSizer.Add(hmainSizer, 0,wx.ALL|wx.EXPAND, 10)

        self.SetSizer(vmainSizer)

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, None)
        frame.Show(True)
        frame.Centre()
        return True
 
if __name__=='__main__':    
 
    app = MyApp(0)
    app.MainLoop()

我很高兴您满意地解决了这个问题,但是,正如我在评论中指出的,如果您只需调整代码,使webview成为
self
的子视图,而不是图像,那么它就可以工作了

import wx
import wx.html2
from os import getcwd
import wx.media


class MyFrame(wx.Frame):
      def __init__(self, parent, id, title):
        wx.Frame.__init__(self, None, id, u"PC GAMES Updater/Launcher V2.0 By -Fawn-", wx.DefaultPosition, wx.Size(1280, 650))#,style=wx.MINIMIZE_BOX|wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)

        ImgDir = (getcwd()+u"/frame1.png")
        fond = wx.Image(ImgDir, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        self.bg = wx.StaticBitmap(self, -1, fond)

        self.browser = wx.html2.WebView.New(self,-1,size=(370,200))
        self.browser.LoadURL("http://utrem.tf/www/news.html")
        #self.browser.LoadURL("http://ninjaaior.free.fr/2505/news.html")

        #Sizer news
        gbox7 = wx.GridBagSizer(1,1)
        gbox7.SetEmptyCellSize((10,10))
        gbox7.Add(self.browser,(0,0))

        #NEWS
        box7= wx.StaticBox(self, -1, "NEWS")
        bsizer7 = wx.StaticBoxSizer(box7, wx.HORIZONTAL)
        sizerH7 = wx.BoxSizer(wx.VERTICAL)
        sizerH7.Add(gbox7, 0, wx.ALL|wx.CENTER, 10)
        bsizer7.Add(sizerH7, 1, wx.EXPAND, 0)

        vSizer3 = wx.BoxSizer(wx.VERTICAL,)
        vSizer3.Add(bsizer7, 0,wx.ALL|wx.EXPAND, 10)

        hmainSizer=wx.BoxSizer(wx.HORIZONTAL)
        hmainSizer.Add(vSizer3, 0,wx.ALL|wx.EXPAND, 10)

        vmainSizer=wx.BoxSizer(wx.VERTICAL)
        vmainSizer.Add(hmainSizer, 0,wx.ALL|wx.EXPAND, 10)

        self.SetSizer(vmainSizer)

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, None)
        frame.Show(True)
        frame.Centre()
        return True

if __name__=='__main__':    

    app = MyApp(0)
    app.MainLoop()

我很高兴您满意地解决了这个问题,但是,正如我在评论中指出的那样,如果您只需调整代码,使webview成为
self
的子视图,而不是图像,那么它就会起作用

import wx
import wx.html2
from os import getcwd
import wx.media


class MyFrame(wx.Frame):
      def __init__(self, parent, id, title):
        wx.Frame.__init__(self, None, id, u"PC GAMES Updater/Launcher V2.0 By -Fawn-", wx.DefaultPosition, wx.Size(1280, 650))#,style=wx.MINIMIZE_BOX|wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)

        ImgDir = (getcwd()+u"/frame1.png")
        fond = wx.Image(ImgDir, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        self.bg = wx.StaticBitmap(self, -1, fond)

        self.browser = wx.html2.WebView.New(self,-1,size=(370,200))
        self.browser.LoadURL("http://utrem.tf/www/news.html")
        #self.browser.LoadURL("http://ninjaaior.free.fr/2505/news.html")

        #Sizer news
        gbox7 = wx.GridBagSizer(1,1)
        gbox7.SetEmptyCellSize((10,10))
        gbox7.Add(self.browser,(0,0))

        #NEWS
        box7= wx.StaticBox(self, -1, "NEWS")
        bsizer7 = wx.StaticBoxSizer(box7, wx.HORIZONTAL)
        sizerH7 = wx.BoxSizer(wx.VERTICAL)
        sizerH7.Add(gbox7, 0, wx.ALL|wx.CENTER, 10)
        bsizer7.Add(sizerH7, 1, wx.EXPAND, 0)

        vSizer3 = wx.BoxSizer(wx.VERTICAL,)
        vSizer3.Add(bsizer7, 0,wx.ALL|wx.EXPAND, 10)

        hmainSizer=wx.BoxSizer(wx.HORIZONTAL)
        hmainSizer.Add(vSizer3, 0,wx.ALL|wx.EXPAND, 10)

        vmainSizer=wx.BoxSizer(wx.VERTICAL)
        vmainSizer.Add(hmainSizer, 0,wx.ALL|wx.EXPAND, 10)

        self.SetSizer(vmainSizer)

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, None)
        frame.Show(True)
        frame.Centre()
        return True

if __name__=='__main__':    

    app = MyApp(0)
    app.MainLoop()

self.browser=wx.html2.WebView.New(self.bg,-1,size=(370200))
其中
self.bg
是静态位图,而不是
self
(即帧)。那可能没用!我试着直接把它和框架作为父框架,它也不起作用:'(我想这是因为HTML页面的行为……所以我决定通过重新编码页面来解决它。
self.browser=wx.html2.WebView.New(self.bg,-1,size=(370200))
其中
self.bg
是静态位图,而不是
self
(即框架)。这可能没有帮助!我试图直接将其与框架作为父对象放在一起,但也不起作用:'(我认为这是因为HTML页面的行为……因此我决定通过重新编码页面来解决它。是的,但它在“self.bg”上起作用因此,你没有帧背景,只有图像。好吧,所有这些故事都是因为html代码没有滚动!是的,但它在“self.bg”上工作,所以你没有帧背景,只有图像。好吧,所有这些故事都是因为html代码没有滚动!