Topic: PySide.QtGui  (Letto 1648 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Gioval

PySide.QtGui
« il: Febbraio 02, 2016, 18:14 »
Buonasera spero qualcuno posso illuminarmi sul corretto funzionamento di QFontDialog.getFont e il metodo setFont...

Allora ho scritto il seguente programma e devo fare una cosa: devo aggiungere la possibilità di cambiare il tipo di font nella textbar, mi è stato detto che ciò è possibile con i metodi che ho scritto prima, il problema è che non riesco a capire come posso implementarli al mio codice...Qualche consiglio? Ho letto e riletto la documentazione originale più volte ma non riesco a venirne a capo. Posto il codice

[codice]from PySide.QtGui import *

app = QApplication ([])

window = QWidget()

layout = QVBoxLayout()

tlayout = QHBoxLayout()

button_open = QPushButton('Open')
button_save = QPushButton('Save')
button_exit = QPushButton('Exit')
button_font = QPushButton('Font')

tlayout.addWidget(button_open)
tlayout.addWidget(button_save)
tlayout.addWidget(button_exit)
tlayout.addWidget(button_font)

textedit = QTextEdit('')

font = QFontDialog()
   
layout.addLayout(tlayout)
layout.addWidget(textedit)

window.resize(500,300)
window.setWindowTitle('Fondamenti di programmazione')

window.setLayout(layout)

def open_callback():
    filename, _ = QFileDialog.getOpenFileName(window)
    with open(filename, 'U') as f:
        textedit.setText(f.read().decode('utf8'))

def save_callback():
    filename, _ = QFileDialog.getSaveFileName(window)
    with open(filename, 'w') as f:
        f.write(textedit.toPlainText().encode('utf8'))
   
button_open.clicked.connect(open_callback)
button_save.clicked.connect(save_callback)
button_exit.clicked.connect(app.quit)
button_font.clicked.connect(font_callback)

window.show()

app.exec_()[/codice]

Offline Malboro

  • python unicellularis
  • *
  • Post: 37
  • Punti reputazione: 0
    • Mostra profilo
Re: PySide.QtGui
« Risposta #1 il: Febbraio 03, 2016, 02:27 »
se intendevi nell textedit,
forse una cosa del genere??
 :question: :question:
[codice]#----------------------------------------------------------------------
def font_callback():
   """"""
   textedit.setFont('URW Gothic L')[/codice]
« Ultima modifica: Febbraio 03, 2016, 02:29 da Malboro »

Offline pestatasti

  • python neanderthalensis
  • ****
  • Post: 405
  • Punti reputazione: 0
    • Mostra profilo
Re: PySide.QtGui
« Risposta #2 il: Febbraio 03, 2016, 07:16 »
Capisco che se si trova la risposta pronta è molto comodo.
Per i casi avversi bisognerà vedere la documentazione. Problemi con l' inglese prova da qui

Offline Malboro

  • python unicellularis
  • *
  • Post: 37
  • Punti reputazione: 0
    • Mostra profilo
Re: PySide.QtGui
« Risposta #3 il: Febbraio 03, 2016, 07:51 »
se intendevi nell textedit,
forse una cosa del genere??
 :question: :question:
[codice]#----------------------------------------------------------------------
def font_callback():
   """"""
   textedit.setFont('URW Gothic L')[/codice]
Capisco che se si trova la risposta pronta è molto comodo.
Per i casi avversi bisognerà vedere la documentazione. Problemi con l' inglese prova da qui


in specifico :
https://translate.google.com/translate?sl=en&tl=it&js=y&prev=_t&hl=it&ie=UTF-8&u=http%3A%2F%2Fwiki.qt.io%2FPySide%23Documentation&edit-text=
 ;)

Gioval

Re: PySide.QtGui
« Risposta #4 il: Febbraio 03, 2016, 16:37 »
Mi rendo conto che non mi sono spiegato bene: non ho problemi a usare setFont per settare il carattere, il mio problema è che premendo su il tasto font mi si apre, con l'ausilio del getFont, una finestra dove posso scegliere il tipo di carattere e la grandezza, quest'ultimo però mi viene riportato sotto questa forma:

[codice]<PySide.QtGui.QFont( "Bitstream Charter,11,-1,5,50,0,0,0,0,0" )  at 0x7f9fe5bdb7e8>
True[/codice]
 
passandogli questo valore però setFont non funziona, poichè dovrebbe prendere come valore(nome font, grandezza) e applicare il cambiamento al testo presente nel textedit, questa modifica deve avvenire ogni volta che clicco sul tasto font e scelgo un nuovo carattere o cambio la grandezza.
Quindi il mio problema è: come posso addattare i valori(nome font e grandezza) che mi viene riportato da getFont in modo tale che setFont lo accetti e lo imposti  di conseguenza su tutto il testo del textedit?
Non riesco a capire in cosa sbaglio  :confused:

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.154
  • Punti reputazione: 9
    • Mostra profilo
Re: PySide.QtGui
« Risposta #5 il: Febbraio 03, 2016, 16:56 »
Non è che ti sei spiegato male (vabbè, un po' male, ma diciamo che si capisce). Il problema è che NON POSTI IL MALEDETTO CODICE. Pare che questo sia un problema piuttosto diffuso in questo forum, vedi per esempio http://www.python-it.org/forum/index.php?topic=9604.msg81686#msg81686.

Nel tuo caso, cominci postando 50 inutili righe che non c'entrano assolutamente niente con il problema per cui chiedi aiuto: c'è tutto il codice che serve a disegnare 4 pulsanti, collegarli ai callback, poi c'è il codice di tutti i callback che non ci interessano... ma guarda caso MANCA il callback che ti causa problemi.
Poi qualcuno, andando così a tentoni, prova a suggerirti una possibile implementazione di questo callback, ma chiaramente non è quello il tuo problema. E invece di scriverci il codice di quel callback, ti metti a DESCRIVERE A PAROLE l'effetto che ottieni facendoci girare il codice CHE NON CI FAI VEDERE.

Scusa, ma prova a rileggerti:
> il mio problema è che premendo su il tasto font mi si apre,
> con l'ausilio del getFont,
> una finestra dove posso scegliere il tipo di carattere e la grandezza,
> quest'ultimo però mi viene riportato sotto questa forma: (etc)

Ma ti pare che possiamo aiutarti se non vediamo il CODICE che produce tutto questo? Dovremmo continuare ad andare per tentativi e tu ci dici "acqua acqua fuochino"?

Posta il codice di questo "font_callback", per cortesia.

Offline Malboro

  • python unicellularis
  • *
  • Post: 37
  • Punti reputazione: 0
    • Mostra profilo
Re: PySide.QtGui
« Risposta #6 il: Febbraio 03, 2016, 22:38 »
Mi rendo conto che non mi sono spiegato bene: non ho problemi a usare setFont per settare il carattere, il mio problema è che premendo su il tasto font mi si apre, con l'ausilio del getFont, una finestra dove posso scegliere il tipo di carattere e la grandezza, quest'ultimo però mi viene riportato sotto questa forma:

[codice]<PySide.QtGui.QFont( "Bitstream Charter,11,-1,5,50,0,0,0,0,0" )  at 0x7f9fe5bdb7e8>
True[/codice]
 
passandogli questo valore però setFont non funziona, poichè dovrebbe prendere come valore(nome font, grandezza) e applicare il cambiamento al testo presente nel textedit, questa modifica deve avvenire ogni volta che clicco sul tasto font e scelgo un nuovo carattere o cambio la grandezza.
Quindi il mio problema è: come posso addattare i valori(nome font e grandezza) che mi viene riportato da getFont in modo tale che setFont lo accetti e lo imposti  di conseguenza su tutto il testo del textedit?
Non riesco a capire in cosa sbaglio  :confused:

In considerazione che nella risposta precedente ho commesso l'errore di immetterti il link per traduzione della documentazione che dal mio punto di  vista a te serve ora ti post parte di documentazione originale:

 QFontDialog  :question: forse è questo il nome della "finestra", (chiamarla finestra mi sa che non è appropriato), che ti appare mah..!!! :question:
Synopsis
Functions

    def currentFont ()
    def open (receiver, member)
    def options ()
    def selectedFont ()
    def setCurrentFont (font)
    def setOption (option[, on=true])
    def setOptions (options)
    def testOption (option)

Signals

    def currentFontChanged (font)
    def fontSelected (font)

Static functions

    def getFont (, initial, parent, title)
    def getFont (, initial, parent, title, options)
    def getFont (, initial[, parent=None])
    def getFont ([, parent=None])

Detailed Description

    The PySide.QtGui.QFontDialog class provides a dialog widget for selecting a font.

    A font dialog is created through one of the static PySide.QtGui.QFontDialog.getFont() functions.

    Examples:

      (ok, font) = QFontDialog.getFont(QFont("Helvetica [Cronyx]", 10), self)
     if ok:
         # the user clicked OK and font is set to the font the user selected
     else:
         # the user canceled the dialog;  font is set to the initial
         # value, in this case Helvetica [Cronyx], 10

    The dialog can also be used to set a widget's font directly:

     myWidget . setFont ( QFontDialog . getFont ( 0 , myWidget . font ()))

......... segue

per poi aggiungere il link corretto: http://srinikom.github.io/pyside-docs/PySide/QtGui/QFontDialog.html
Ultimo suggerimento, come detto da RicPol:
Citazione
Posta il codice di questo "font_callback", per cortesia
magari già modificato dopo aver riletto la documentazione Grazie  :) ;) :fingers-crossed:
« Ultima modifica: Febbraio 03, 2016, 22:55 da Malboro »