我是wxpython的新手。我無法重疊面板。一般來說,使用兩個或多個面板很容易,但如果其中一個面板的MediaCtrl容器在整個顯示屏幕上播放視頻,則任何其他面板都不可見。我嘗試了panel.Raise()方法,但仍然無法正常工作。 我期待的所有內容都是通過videoPlayer面板將靜態文本與虛擬面板重疊。在下面的代碼中,綠色框位於MediaCtrl控制器的下方。我必須以某種方式將視頻面板上方的面板。我經歷了很多問題,但我所能得到的只是使用.Raise(),而不是在我的情況下工作。WXPython視頻MediaCtrl自定義按鈕
import wx
import wx.media
import os
########################################################################
class MyPanel(wx.Panel):
""""""
# ----------------------------------------------------------------------
def __init__(self, parent):
""""""
wx.Panel.__init__(self, parent)
self.parent_size = parent.GetClientSize()
self.init_view()
def init_view(self):
#self.SetDimensions(0, 0, wx.GetDisplaySize().width, wx.GetDisplaySize().height)
self.SetDimensions(0, 0, 50,50)
self.text_view = wx.StaticText(self, size=(1020, 40), pos=(10, 10), label="Some Label")
self.mc = wx.media.MediaCtrl(self)
# from wx.animate import AnimationCtrl
# self.text_view.write("ABDS")
self.settings_btn = wx.Button(self, -1, "Settings")
self.Bind(wx.EVT_BUTTON, self.settings_button_clicked, self.settings_btn)
self.Bind(wx.EVT_LEFT_UP, self.on_panel_clicked)
print(os.path.exists("SampleVideo_1280x720_10mb.mp4"))
path = os.path.dirname(os.path.abspath("SampleVideo_1280x720_10mb.mp4")) + "/SampleVideo_1280x720_10mb.mp4"
if not self.mc.Load(path):
print("unable to load video")
else:
self.mc.SetInitialSize()
self.mc.Play()
def on_panel_clicked(self, event):
print("panel clicked...")
if self.settings_btn.IsShown():
self.settings_btn.Hide()
else:
self.settings_btn.Show()
def settings_button_clicked(self, event):
print("Settings Btn Clicked...")
class BannerPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.SetBackgroundColour("green")
self.SetDimensions(0, 0, 100, 100)
self.Raise()
#self.ToggleWindowStyle(wx.STAY_ON_TOP)
########################################################################
class MyFrame(wx.Frame):
""""""
# ----------------------------------------------------------------------
def __init__(self):
""""""
# wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN
wx.Frame.__init__(self, None, title="Test Maximize", size=wx.Size(1100, 700), style=wx.CLIP_CHILDREN)
self.videoPlayerPanel = MyPanel(self)
self.bannerPanel = BannerPanel(self)
self.Show()
# self.videoPlayerPanel.mc.Lower()
self.bannerPanel.Raise()
# print(self.GetClientSize())
# self.Maximize(True)
# self.initGUI()
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame()
# frame.ShowFullScreen(True)
app.MainLoop()
嗨,尼克,謝謝你的回覆。但是在垂直佈局中使用BoxSizer時,兩個面板都以垂直佈局進入,而我試圖將bannerPanel放在videoPlayerPanel上方。 – rohitranjan
我編輯了我的回覆,我認爲他們可能需要分開調整大小,然後再提高第二個大小。 –
嗨,尼克,感謝您對此進行調查。我試着用上面的代碼,理想情況下你的代碼應該與面板一起使用像statictext等小部件面板,但我認爲這個問題必須做一些特定的wx.media.MediaCtrl,我用於視頻播放器,不知何故它不允許任何其他提出的觀點/面板超過它。 – rohitranjan