0

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

所以我会在这里发帖。我希望我的新闻在 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()

PS:我必须保持我的“新闻”大小(370,200)!

感谢有人可以帮助并解释我做错了什么。

4

2 回答 2

2

我很高兴您满意地解决了这个问题,但是,正如我在评论中指出的那样,如果您只是调整您的代码以使 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()

在此处输入图像描述

于 2020-12-27T09:30:02.343 回答
0

好的,这完全是因为 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()
于 2020-12-27T04:01:09.020 回答