私はwxpythonの初心者です。私はパネルを重ねることができません。一般に、2つ以上のパネルで簡単に行うことはできますが、パネルの1つにMediaCtrlコンテナがフルディスプレイ画面でビデオを再生している場合、他のパネルはその上に表示されません。私はpanel.Raise()メソッドで試しましたが、まだ動作していません。 私が期待しているのは、videoPlayerパネルでStaticTextをダミーパネルに重ねることです。下のコードでは、緑色のボックスがMediaCtrlコントローラの下に来ています。私は何とかビデオパネルの上にbannelパネルを持っていなければなりません。私はたくさんの質問をしましたが、私が得ることができるのは、私のケースでは動作していない。ライズ()を使用することです。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を縦型レイアウトにすると、両方のパネルが縦型レイアウトになりますが、videoPlayerPanelの上にbannerPanelを配置しようとしています。 – rohitranjan
私は自分の返信を編集しました。私は彼らが別のサイザーにいなければならないかもしれないと思います。 –
こんにちはニック、これを見ていただきありがとうございます。私は上記のコードを試して理想的にはあなたのコードはstatictextなどのウィジェットを持つパネルで動作するはずですが、問題は私がビデオプレーヤーに使用しているwx.media.MediaCtrlで何かをしなければならないと思います他の盛り上がったビュー/パネルがその上に来ることを許可していません。 – rohitranjan