Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [Python] Problema wx.Frame

    salve a tutti e sopratutto Buon Natale!

    in questi giorni di festa mi sonon un pò a studiare wxPython.
    ho creato questa classe qua:
    codice:
    # file Form.py
    import wx
    from wx._controls import Button
    
    class Form(wx.Frame):
    
        def __init__(self):
            wx.Frame.__init__(None, title = "Python YoutubeDL", size = (410, 80), style = wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)
            
            txtUrl = wx.TextCtrl(self, pos = (5, 5), size = (400, 25))
            txtUrl.Bind(wx.EVT_KEY_DOWN, self.loadUrl)
            txtUrl.SetFocus()
    
            btnGo = Button(self, label = "Download", pos = (5, 40))
            btnGo.Bind(wx.EVT_BUTTON, self.loadUrl)
            
        def loadUrl(self, event):
            if event.GetKeyCode() == wx.WXK_RETURN:
                if self.txtUrl.GetValue() == "":
                    wx.MessageBox(parent = self, message = 'Immettere un indirizzo', caption = 'Errore', style = wx.OK ^ wx.ICON_INFORMATION)
            else:
                event.Skip()
    poi ho una file chiamato __init__.py che sto usando come start del programma.
    dentro ci ho messo questo:
    codice:
    import wx
    from Form import *
    
    app = wx.App()
    f = Form()
    f.Show()
    app.MainLoop()
    ma ottengo questo errore:
    codice:
    TypeError: unbound method __init__() must be called with Frame instance as first argument (got NoneType instance instead)
    mi sapete dire da cosa dipende??

  2. #2
    Quanto tu richiami il costruttore di una classe base devi passargli l'istanza corrente come primo parametro, altrimenti come fa a sapere su che oggetto deve lavorare?
    codice:
            wx.Frame.__init__(self, title = "Python YoutubeDL", size = (410, 80), style = wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Originariamente inviato da MItaly
    Quanto tu richiami il costruttore di una classe base devi passargli l'istanza corrente come primo parametro, altrimenti come fa a sapere su che oggetto deve lavorare?
    codice:
            wx.Frame.__init__(self, title = "Python YoutubeDL", size = (410, 80), style = wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)
    giusto.
    grazie così funziona!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.