2016-04-11 4 views
0

Ich lerne die Verwendung von wxPython. Ich habe einige grundlegende Beispiele gemacht, die gut funktionieren, aber hier versagt es. Es ist ein einfacher Rahmen zum Platzieren einer Zahl, die mit Hilfe von wxFormBuilder erstellt wurde. Ich renne: Python 3.5.1 | Anaconda 2.5.0 (64-Bit) | (Standard, 16. Februar 2016, 09:49:46) [MSC v.1900 64 Bit (AMD64)] unter Windows 8.1. Die Version von wxPython Phoenix ist (3.0.3.dev1964 + f780b21)Warum Python3 Wx-Modul nicht ausführen kann, dass mein Objekt kein Attribut 'SetSizeHintsSz' hat?

wxFormBuilder Code "test_wx.py" ist:


# -*- 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() 

Dann habe ich diesen Hauptskript meine Demo-Aufruf :


# -*- 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__ 

Der Code läuft nicht. Der einzige Hinweis, den ich bekomme, ist:

AttributeError: 'CalcFrame' object has no attribute 'SetSizeHintsSz'

Aber das scheint mir in der geerbten Klasse verfügbar ist !!! Irgendwie habe ich versucht, in die Definition von CalcFrame die Aussage einzubeziehen:

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

Aber hat auch nicht funktioniert. Was könnte mit diesem Code falsch sein?

Antwort

1

SetSizeHintsSz ist SetSizeHints in wxpython Phönix.

Für eine (relativ umfassende) Liste von Klassen, Funktionen und Methoden, die beim Portieren Ihres Codes von Classic nach Phoenix geändert werden müssen, lesen Sie bitte das Dokument .

Verwandte Themen