0

我的项目是 YouTube,主页包含您可以观看的视频。视频由缩略图和“播放”下方的按钮组成。我想要一个像这样制作的 wxpython 面板... \image\ button \image\ button 等等

屏幕顶部的图像水平放置在中心,下方有一个按钮。然后就在第一个视频的按钮下方,一个图像,然后是一个按钮,依此类推。

我尝试查看sizer,我想解决方案将包括sizer,但我很难理解它是如何工作的以及如何使用它来解决我的问题。

这就是我到目前为止所拥有的(将第一张图像水平放置在中心)

    self.image = wx.StaticBitmap(self)
    self.image.SetBitmap(wx.Bitmap('icon.png'))
    self.topsizer = wx.BoxSizer(wx.HORIZONTAL)
    self.topsizer.Add(self.image, wx.ALIGN_CENTER_HORIZONTAL)
    self.SetSizer(self.topsizer)
    self.Layout()
4

1 回答 1

0

要记住的是,人们不能只share编码,除非他们正在做你想做的事情。它必须写出来。
尝试以此为起点。
图像重新缩放特定于我的图像,以使它们具有正确的大小。

import wx 
from wx.lib.scrolledpanel import ScrolledPanel

imgs = ['ace.png','2.png','3.png','4.png','5.png']
links = ['https://www.asite.com/ace.mp4', 'https://www.asite.com/2.mp4', 'https://www.asite.com/3.mp4', 'https://www.asite.com/4.mp4', 'https://www.asite.com/5.mp4']

class Example(wx.Frame): 
   
    def __init__(self, parent, title): 
        super(Example, self).__init__(parent, title = title) 
             
        self.InitUI() 
        self.Centre() 
        self.Show()
        
    def InitUI(self): 
        panel = ScrolledPanel(self, wx.ID_ANY)
        panel.SetupScrolling()
        vbox = wx.BoxSizer(wx.VERTICAL) 

        for index, img in enumerate(imgs):
            bmp = wx.Bitmap(img)
            image = bmp.ConvertToImage()
            image.Rescale(70, 100)
            bmp = wx.Bitmap(image)
            video = wx.StaticBitmap(panel, wx.ID_ANY, bmp)
            button = wx.Button(panel, wx.ID_ANY, "Play", name=str(index))
            button.SetToolTip("Play "+links[index])
            vbox.Add(video, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 0) 
            vbox.Add(button, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5) 
            self.Bind(wx.EVT_BUTTON, self.OnPlay, button)
 
        panel.SetSizer(vbox) 

    def OnPlay(self, event): 
        obj = event.GetEventObject()        
        print("Playing ..."+links[int(obj.GetName())])
                  
app = wx.App() 
Example(None, title = 'BoxSizer Demonstration') 
app.MainLoop()

在此处输入图像描述

于 2021-03-23T16:55:58.390 回答