0

私は数日前に言語を学び始めたばかりなので(事前にプログラミングの経験はありません)、Pythonの完全な初心者です。

私は基本的にここで頭蓋骨を机にぶつけて、前のメニューを置換/非表示/破棄することになっている別のメニューにつながるボタンを備えた1つのメニューを作成しようとしています(プロセスが可能な限り、どちらも機能します)反転します)。

私がこれまでに思いついたこと:

import wx


class MainFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None)

        self.Centre()
        self.main_menu = MainMenu(self)
        self.intro_screen = IntroScreen(self)
        self.intro_screen.Hide()


class MainMenu(wx.Frame):

    def __init__(self, parent):
        wx.Frame.__init__(self, parent=parent)

        self.main_menu = MainMenu
        panel = wx.Panel(self)
        sizer = wx.BoxSizer(wx.VERTICAL)

        nextscreen = wx.Button(panel, label='Next Screen', size=(150,30))
        nextscreen.Bind(wx.EVT_BUTTON, self.NextScreen)
        sizer.Add(nextscreen, 0, wx.CENTER|wx.ALL, 5)

        self.Show()
        self.Centre()

    def NextScreen(self, event):

        self.main_menu.Hide(self)
        self.intro_screen.Show()


class IntroScreen(wx.Frame):

    def __init__(self, parent):
        wx.Frame.__init__(self, parent=parent)

        self.intro_screen = IntroScreen
        panel = wx.Panel(self)
        sizer = wx.BoxSizer(wx.VERTICAL)

        gobackscreen = wx.Button(panel, label='Go Back a Screen', size=(150,30))
        gobackscreen.Bind(wx.EVT_BUTTON, self.GoBackScreen)
        sizer.Add(gobackscreen, 0, wx.CENTER|wx.ALL, 5)

        self.Show()
        self.Centre()

    def GoBackScreen(self, event):

        self.intro_screen.Hide()        
        self.main_menu.Show()


if __name__ == "__main__":
    app = wx.App(False)
    frame = MainFrame()
    #frame.Show()
    app.MainLoop()

私が知る限り、NextScreen ボタンには intro_screen クラスが表示されないため、表示できません。しかし、私はこれを修正する方法について無知です。

実際、これが正しい方法であるかどうかはまったくわかりません。どんな助けでも大歓迎です

Python 2.7 の使用

4

1 に答える 1

1

intro_screenMainFrameインスタンスの属性です。インスタンスではありません。MainMenu

メソッドはとしてインスタンスにMainMenu.__init__()渡されます。行で が設定されているかどうかはわかりませんが、設定されていない場合は を追加してください。MainFrameparentself.parentwx.Frame.__init__(self, parent=parent)self.parent = parentMainMenu.__init__(

self.parentその後、MainMenuインスタンスを参照できます。次のように動作するはずです。

self.parent.intro_screen.Show()

現在のクラスをインスタンス属性として設定している理由がわかりません:

self.main_menu = MainMenu

self.intro_screen = IntroScreen

self.main_menu.Hide(self)を呼び出すだけでなくself.Hide()、クラスへの参照は必要ありません

于 2013-05-21T22:01:27.330 に答える