私はwxPythonの使い方を学んでいます。私はうまく動作するいくつかの基本的な例を行ったが、これは失敗する。 wxFormBuilderの助けを借りて作成された、数値を四角で囲む単純なフレームです。私は走っています: Python 3.5.1 | Anaconda 2.5.0(64-bit)| (デフォルト、Feb 16 2016、09:49:46)Windows 8.1では[MSC v.1900 64ビット(AMD64)]。 wxPythonののバージョンはフェニックス(+ f780b21 3.0.3.dev1964)私のオブジェクトに属性 'SetSizeHintsSz'がないと言うpython3がwxモジュールを実行できないのはなぜですか?
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' object has no attribute 'SetSizeHintsSz'
しかし、それは私には継承されたクラスで利用できるようです!いずれにしても、私はCalcFrameの定義に次の文を含めるようにしました:
self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
しかし、どちらもうまくいきませんでした。このコードで何が問題なのでしょうか?