Topic: wx.App.stdioWin ... ma dove si trova?  (Letto 443 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 330
  • Punti reputazione: 0
    • Mostra profilo
wx.App.stdioWin ... ma dove si trova?
« il: Gennaio 04, 2019, 10:15 »
Salve, lo so che è una domanda da utonto, chiedo venia.

Sto seguendo l'ottima guida su wxPython di @RicPol (grazie @Ric, veramente ben fatta, complimenti) e son rimasto incuriosito dal commento in questa istruzione :
            app.stdioWin.close() # notare la "c" minuscola!


e sono andato a cercare di capire come mai quella "c" (ed anche la "s") non adotta l'onnipresente camelcase delle wx ... senza riuscire a trovar traccia di "stdioWin" tanto nelle api di "App" quanto in quelle di "AppConsole" (classe figlis di App cui riferiscono metodi come OnInit o OnEcit).

Mi è evidente che c'è qualcosa di contemporaneamente fondamentale e banale che non ho compreso, ritenevo stdioWin quale probabile metodo di classe che restituisce un oggetto "finestra" ma così non è e non ne sto venendo a capo ... potete illuminarmi?

[Edit] ... riguardando, l'ennesima volta, credo di aver (finalmente) capito che trattasi di una variabile (di classe o di istanza?), circostanza esplicitamente detta nel testo e che non avevo assimilato (sono condizionato dalle "scatole chiuse" java) e devo, quindi, andarmi a guardare la classe PyOnDemandOutputWindow per capire quella "c" :)

[ri-edit] ... e la spiegazione è semplicemente che ... per quella istruzione non è stato rispettato il CamelCase! come per flush() e write()  :D
« Ultima modifica: Gennaio 04, 2019, 10:44 da nuzzopippo »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.146
  • Punti reputazione: 9
    • Mostra profilo
Re:wx.App.stdioWin ... ma dove si trova?
« Risposta #1 il: Gennaio 05, 2019, 18:21 »
Uhm, sì all'incirca è così. PyOnDemandOutputWindow è una classe *scritta in Python puro* (da cui l'iniziale Py...) per le esigenze specifiche di wxPython (nel senso: in wxWidgets le cose stanno diversamente, e questa classe non c'è). Il suo scopo è quello di disegnare un semplice frame per il reindirizzamento degli stream di output. Siccome è scritta in Python, la sua api segue lo stile di Python anche per differenziarsi visivamente dalle "normali" classi wxPython: pertanto i suoi metodi sono tutti minuscoli.
Le "normali" classi wxPython sono dei wrapper intorno alle corrispondenti classi di wxWidgets, generati automaticamente (da SWIG una volta, ora da SIP). Pertanto seguono il code stile di wxWidgets, con i nomi dei metodi in CamelCase.

Detto questo, ho aggiunto un disclaimer generale ai miei appunti, che dovresti leggere:
https://forumpython.it/wxpython/appunti-wxpython-in-italiano-disponibili/msg88298/?topicseen#msg88298

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 330
  • Punti reputazione: 0
    • Mostra profilo
Re:wx.App.stdioWin ... ma dove si trova?
« Risposta #2 il: Gennaio 06, 2019, 06:53 »
Grazie del chiarimento, circostanza da tener presente, data la natura case-sensitive di python.

Letto il Tuo disclaimer, avevo presente l'origine di versione, come per altra docs reperita in python.it adatto alla versione del software da me utilizzato, ho l'abitudine di scrivere a mano il testo originario e poi di farmi le versioni depurate da errori e warnings con commenti, tipo questo  (da me indicizzato come awx_5_7_04_2) :

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

import wx

class MyFrame(wx.Frame):
    '''
Funziona ma segnala deprecato il metodo Meu.AppendMenu()
awx_5_7_04.py:31: wxPyDeprecationWarning: Call to deprecated item. Use Append instead.
  my_menu.AppendMenu(-1, 'ecco un sotto-menu', submenu)
clic sulla voce uno
clic sulla voce uno del submenu
clic sulla voce quattro

In questa versione è risolto utilizzando "Append(id, testo, item)" invece
di AppendMenu
'''
    def __init__(self, *a, **k):

Ciò per familiarizzare con stile di codifica e differenze.

Per altro, non posso che rinnovare il mio ringraziamento del lavoro da Te già fatto e darti ragione in merito allo scarso riconoscimento restituito all'impegno profuso, anche quando di qualità, come il Tuo ... fattore sin troppo presente nell'ambito del software libero e relativa documentazione.
Che dirTi @Ric, mi dispiace che Tu, come tante altre, preziose, persone non abbiate lo stimolo che meritate per il Vostro contributo, comprendo e rimpiango che io e quelli che, come me, ne approfittano non sappiano essere equamente adeguati.

Grazie ancora. Ciao.