0

wxPython の使い方を学んでいます。正常に動作するいくつかの基本的な例を実行しましたが、これでは失敗します。これは、wxFormBuilder の助けを借りて作成された、数値を 2 乗するための単純なフレームです。私は実行しています: Python 3.5.1 |アナコンダ 2.5.0 (64 ビット)| (デフォルト、2016 年 2 月 16 日、09:49:46) [MSC v.1900 64 ビット (AMD64)] Windows 8.1 で。wxPython のバージョンは Phoenix (3.0.3.dev1964+f780b21) です。

wxFormBuilder コード "test_wx.py" は次のとおりです。


# -*- coding: utf-8 -*- 

###########################################################################
## Python code generated with wxFormBuilder (version Jun 17 2015)
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################

import wx
import wx.xrc

import gettext
_ = gettext.gettext

###########################################################################
## Class MyFrame1
###########################################################################

class MyFrame1 ( wx.Frame ):

    def __init__( self, parent ):
        wx.Frame.__init__ (self, parent, id = wx.ID_ANY, 
                           title = wx.EmptyString, 
                           pos = wx.DefaultPosition, 
                           size = wx.Size( 342,246 ), 
                           style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )

        self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )

        bSizer1 = wx.BoxSizer( wx.VERTICAL )

        self.m_staticText1 = wx.StaticText( self, wx.ID_ANY, 
                                           _(u"Give me a number"),
                                           wx.DefaultPosition, 
                                           wx.DefaultSize, wx.ALIGN_CENTRE )
        self.m_staticText1.Wrap( -1 )
        bSizer1.Add( self.m_staticText1, 0, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )

        self.m_textCtrl1 = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer1.Add( self.m_textCtrl1, 0, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )

        self.m_button1 = wx.Button( self, wx.ID_ANY, 
                                   _(u"Find the square!"), 
                                   wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer1.Add( self.m_button1, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5 )

        self.m_textCtrl2 = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, 
                                        wx.DefaultPosition, wx.DefaultSize, wx.TE_CENTRE )
        bSizer1.Add( self.m_textCtrl2, 0, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )


        self.SetSizer( bSizer1 )
        self.Layout()

        self.Centre( wx.BOTH )

        # Connect Events
        self.m_button1.Bind( wx.EVT_BUTTON, self.square)

    def __del__( self ):
        pass


    # Virtual event handlers, override them in your derived class
    def square( self, event ):
        event.Skip()

次に、このメイン スクリプトでデモを呼び出します。


# -*- coding: utf-8 -*-
"""
Created on Sun Apr 10 12:42:45 2016

@author: Miguel
"""
# -*- coding: utf-8 -*- 

import wx

# Import the GUI as prepared by wxFormBuilder
import test_wx as demo

class CalcFrame(demo.MyFrame1): 
   def __init__(self,parent): 
      demo.MyFrame1.__init__(self,parent)

   def square(self,event): 
      num = int(self.m_textCtrl1.GetValue())
      self.m_textCtrl2.SetValue (str(num * num)) 

app = wx.App(False) 
frame = CalcFrame(None) 
frame.Show(True) 

# Start the GUI  
app.MainLoop()
wx.__version__

コードが実行されていません。私が得ている唯一の手がかりは次のとおりです。

AttributeError: 'CalcFrame' オブジェクトに属性 'SetSizeHintsSz' がありません

しかし、それは継承されたクラスで利用できるようです!!! とにかく、CalcFrame の定義に次のステートメントを含めようとしました。

        self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )

しかし、どちらも機能しませんでした。このコードの何が問題なのですか?

4

1 に答える 1

1

SetSizeHintsSzwxpython phoenix の SetSizeHints です。

コードを Classic から Phoenix に移植する際に変更が必要なクラス、関数、およびメソッドの (比較的包括的な) リストについては、 Classic vs. Phoenixドキュメントを参照してください。

于 2016-04-11T06:30:06.600 に答える