0

私はこの2つのコードを書きました:

  1. wx.frameから継承するクラスMyframeを作成し、アプリを作成すると、期待どおりに正常に動作します。

code1.py

import wx
class MyApp(wx.App):
    def OnInit(self):
        self.frame = MyFrame(None,title="MyFrame")
        self.SetTopWindow(self.frame)
        self.frame.Show()
        return True

class MyFrame(wx.Frame):
    def __init__(self,*args,**kwargs):
        super(MyFrame,self).__init__(*args,**kwargs)

        self.CreateStatusBar()
        self.SetStatusText("Initializing")
        self.CreateToolBar()

if __name__ == "__main__":
    app = MyApp(False)
    app.MainLoop()
  1. 今、私はwx.Appを直接呼び出して同じものを書き直して作成しようとしました

code2.py

import wx

app = wx.App()
frame = wx.Frame(None,-1,"Test")
SetTopWindow(frame)
frame.show()

app.MainLoop()

いくつかのことがコード1として機能していません。

  1. ウィンドウはすぐに閉じます。
  2. SetTopWindowが機能していません..宣言されていない変数が表示されます...それは正しいです..しかし、SetTopWindowを参照するにはどうすればよいですか?
4

1 に答える 1

2

コードにバグがあるため、ウィンドウはすぐに閉じます。ご存知のように、SetTopWindow は定義されていませんが、別の問題もあります。Frame には show() メソッドがありません。Show() メソッドがあります。大文字と小文字の違いに注意してください。最初のコード例を見ると、アプリ オブジェクトの SetTopWindow() メソッドを呼び出していることがわかります。ここでもそれを行う必要があります:

import wx

app = wx.App()
frame = wx.Frame(None,-1,"Test")
app.SetTopWindow(frame)
frame.Show()

app.MainLoop()
于 2012-08-30T19:16:23.110 に答える