Я новичок в wxpython. Я не могу перекрывать панели. В общем, это легко сделать с помощью двух или нескольких панелей, но если одна из панелей имеет контейнер MediaCtrl, воспроизводящий видео на полном экране дисплея, тогда любая другая панель не будет видна над ним. Я попытался с помощью метода panel.Raise(), но все же, он не работает. Все, что я с нетерпением жду, это наложить панель фиктивных объектов на StaticText поверх панели videoPlayer. В приведенном ниже коде зеленая рамка идет ниже контроллера MediaCtrl. Я должен как-то принести панель панелей над панелью видео. Я рассмотрел много вопросов, но все, что я мог получить, это использовать .Raise(), который не работает в моем случае.WXPython Video 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
Я отредактировал свой ответ, я думаю, что им может понадобиться отдельный сизер, а затем поднять второй. –
Привет, Ник, Спасибо, что посмотрели на это. Я попытался с приведенным выше кодом, и в идеале ваш код должен работать с панелями с такими виджетами, как статический текст и т. Д., Но я думаю, что проблема должна что-то делать с помощью wx.media.MediaCtrl, который я использую для видеоплеера, и каким-то образом не позволяет поднимать над ним другой поднятый вид/панель. – rohitranjan