Topic: Creare button in finestra.  (Letto 391 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline johnwick

  • python unicellularis
  • *
  • Post: 12
  • Punti reputazione: 0
    • Mostra profilo
Creare button in finestra.
« il: Maggio 10, 2020, 19:12 »
Buonasera. Sto leggendo più guide possibile su python.it, ma per capire la logica di python devo fare pratica....

In una finestra ho creato 2 button. Quando faccio esegui mi da un errore alla riga 27. Non so come correggerlo..

Con un paio di righe di codice funziona. L'ho ampliato e non funziona più. Questo è il codice:

Citazione
# import everything from tkinter module
from tkinter import *
# create a tkinter window
root = Tk()               
 
# Open window having dimension 100x100
root.geometry('1100x600')
root.title("Campionati di Calcio Serie A e B")
style = Style()
style.configure('TButton', font = ('calibri', 20, 'bold'), borderwidth = '4')                 

# Changes will be reflected
# by the movement of mouse.
style.map('TButton', foreground = [('active', '! disabled', 'green')], background = [('active', 'black')])

# Create a Button 1
btn1 = Button(root, text = 'Risultati', bd = '5', command = None)
btn1.grid(row = 0, column = 3, padx =10)                     

# ''' Button 2'''
btn2 = Button(root, text = 'Classifica', bd = '5', command = None)
btn2.grid(row = 1, column = 3, pady = 10, padx = 20)
 
# Note  Set the position of button on the top of window.   
# btn.pack(side = 'left')     
if __name__ == '__main__':
root.mainloop()

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 381
  • Punti reputazione: 0
    • Mostra profilo
Re:Creare button in finestra.
« Risposta #1 il: Maggio 10, 2020, 19:44 »
Buonasera. Sto leggendo più guide possibile su python.it, ma per capire la logica di python devo fare pratica....
La "logica di python" certamente non si capisce programmando interfacce grafiche ma studiando passo passo un buon libro (il lutz è ben considerato dagli avanzati) ... le notiziole ed i corsi on-line normalmente non sono un buon mezzo per imparare.

In una finestra ho creato 2 button. Quando faccio esegui mi da un errore alla riga 27. Non so come correggerlo..
Dato che hai citato (la prossima volta utilizza il pulsate "pythoncode" nell'editor del post) non ne sono certo ma l'errore che Ti da è forse "expected an indent block"? ... se è così stai violando forse la più basilare caratteristica di python : l'indentazione, un'altra caratteristica basilare la hai violata nel Tuo precedente post : il case-sensitive, ovvero, se preferisci, la distinzione tra maiuscole e minuscole.
La qual cosa mi fa pensare che il Tuo metodo di studio non brilli molto sotto gli aspetti completezza7efficacia e, di certo, non potrai integrarlo adeguatamente con domandine nel forum.

Se è altro caso, precisa.

Per l'ipotesi prima posta la soluzione è nel link che Ti ho fornito, lascio a Te risolvere.

Offline johnwick

  • python unicellularis
  • *
  • Post: 12
  • Punti reputazione: 0
    • Mostra profilo
Re:Creare button in finestra.
« Risposta #2 il: Maggio 10, 2020, 20:31 »
Ho risolto il problema della riga 27, ho messo un tab......e non esce più errore.

Adesso esce errore alla riga 9:

Citazione
line 9, in <module>     
    style = Style()
NameError: name 'Style' is not defined

# import everything from tkinter module 
from tkinter import *
# create a tkinter window
root = Tk()               
 
# Open window having dimension 100x100
root.geometry('1100x600')
root.title("Campionati di Calcio Serie A e B")
style = Style()
style.configure('TButton', font = ('calibri', 20, 'bold'), borderwidth = '4')                 

# Changes will be reflected
# by the movement of mouse.
style.map('TButton', foreground = [('active', '! disabled', 'green')], background = [('active', 'black')])

# Create a Button 1
btn1 = Button(root, text = 'Risultati', bd = '5', command = None)
btn1.grid(row = 0, column = 3, padx =10)                     

# ''' Button 2'''
btn2 = Button(root, text = 'Classifica', bd = '5', command = None)
btn2.grid(row = 1, column = 3, pady = 10, padx = 20)
 
# Note  Set the position of button on the top of window.   
# btn.pack(side = 'left')     
if __name__ == '__main__':
    root.mainloop()

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 381
  • Punti reputazione: 0
    • Mostra profilo
Re:Creare button in finestra.
« Risposta #3 il: Maggio 11, 2020, 07:47 »
Ho risolto il problema della riga 27, ho messo un tab......e non esce più errore.

Adesso esce errore alla riga 9:

Citazione
line 9, in <module>     
    style = Style()
NameError: name 'Style' is not defined
...

... che perseveranza!
Guarda che le interfacce grafiche rappresentano uno degli aspetti minori in python, è dalla shell che impari il linguaggio.

Comunque, se hai proprio deciso di volerti complicare la vita, un indizio :
Python 3.8.0 (default, Oct 28 2019, 16:14:01) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license()" for more information.
>>> import tkinter
>>> help('tkinter.Style')
No Python documentation found for 'tkinter.Style'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.

>>> import tkinter.ttk
>>> help('tkinter.ttk.Style')
Help on class Style in tkinter.ttk:

tkinter.ttk.Style = class Style(builtins.object)
 |  tkinter.ttk.Style(master=None)
 | 
 |  Manipulate style database.
 | 
 |  Methods defined here:...

Spero che Tu abbia le idee chiare su moduli e package. In ogni caso, quando "vedi" codice di esempio cerca di comprenderlo prima di usarlo.

Dato che Ti piace guardare codice, dai un'occhiata ad questo mio esempio, non è un gran che ma almeno è un genere di programmazione più indicato per le GUI, rispetto agli stralci da Te visti ... e magari ti darà una idea del perché bisogna aver chiari certi concetti prima di affrontare le interfacce grafiche-

Offline johnwick

  • python unicellularis
  • *
  • Post: 12
  • Punti reputazione: 0
    • Mostra profilo
Re:Creare button in finestra.
« Risposta #4 il: Maggio 11, 2020, 12:59 »
Ho trovato l'errore, sono io, e windows 10 o e python?
Ho seguito il tuo consiglio, sto usando la shell di python 3.8.3rc1 su windows 10 64 bit. Come ti ho detto sto facendo pratica con il codice che trovo in rete.
Su windows 10 errori a non finire nel editor che apro dalla shell di python......

Poi ho un altro pc con Linux (kubuntu (sto usando una derivata di ubuntu) e funziona tutto.

Con Linux con editor nano ho scritto il codice, lo salvato in prova.py pero non lo posso lanciare. Mi dice il file non è presente nella directory (il file c'è).

Ho preso il file creato con linux e l'ho passato su win10. L'ho aperto con la shell di python e adesso funziona anche su win10.....

Il codice che creo con editor di  win10 mi da sempre errore, mentre se li creo con linux funziona tutto...... Booo

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 381
  • Punti reputazione: 0
    • Mostra profilo
Re:Creare button in finestra.
« Risposta #5 il: Maggio 11, 2020, 13:50 »
Ho trovato l'errore, sono io, e windows 10 o e python?
...
Il codice che creo con editor di  win10 mi da sempre errore, mentre se li creo con linux funziona tutto...... Booo

Così, a naso, direi che win10 e python sono innocenti, magari sei Tu che stai anticipando le cose.

Vuoi agire "per bene" in windows? : @RicPol si è dedicato a scrivere una guida per gli utenti windows, seguila, certamente ne guadagnerai.

In ogni caso, alla programmazione ci si approccia con piccoli e ponderati passi, alla svelta non si conclude niente.

Offline johnwick

  • python unicellularis
  • *
  • Post: 12
  • Punti reputazione: 0
    • Mostra profilo
Re:Creare button in finestra.
« Risposta #6 il: Maggio 11, 2020, 17:28 »
Ho letto la guida fino alla quinta parte. La terza parte dice di creare una cartella in D:/  (Virtual environment). Ma non ho capito come fare.

Ho risolto in un altro modo. Il problema dovrebbe essere editor di python 3.8.3rc1.
Su windows 10 ho installato un nuovo editor: NotePad++ 7.8.6 (Plus).
Ho riscritto il codice prova.py. L'ho salvato, e funziona tutto......
Non bisogna fare copia e incolla dal primo file che ho creato con editor di python, non funziona. Come ho detto sopra, bisogna riscrivere il codice in Notepad++

Ce da divertissi.   

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 381
  • Punti reputazione: 0
    • Mostra profilo
Re:Creare button in finestra.
« Risposta #7 il: Maggio 11, 2020, 19:03 »
Ho letto la guida fino alla quinta parte. La terza parte dice di creare una cartella in D:/  (Virtual environment). Ma non ho capito come fare.

Di che guida parli?, di norma una guida che indica di utilizzare un virtual-environment (venv da ora in poi) tratta pure come farli, guarda bene nella guida.
I venv vengono utilizzati per "organizzare" le librerie necessarie ad un progetto partendo da una configurazione minimale di python, in maniera che successivamente sia più semplice organizzare la distribuzione/pubblicazione di una eventuale applicazione o modulo di libreria.

Ho risolto in un altro modo. Il problema dovrebbe essere editor di python 3.8.3rc1.
Su windows 10 ho installato un nuovo editor: NotePad++ 7.8.6 (Plus).
Ho riscritto il codice prova.py. L'ho salvato, e funziona tutto......
Non bisogna fare copia e incolla dal primo file che ho creato con editor di python, non funziona. Come ho detto sopra, bisogna riscrivere il codice in Notepad++

Windows e linux utilizzano formati diversi per i file, in particolare nei file di testo oltre la diversa codifica dei caratteri, utf-8 in linux, mi sembra windows-1252 per le versioni correnti di windows (non uso win da 20 anni), vi è una diversa codifica anche per i fine riga (linefeed in sistemi *nix, era carriagereturn + line feed in windows), in ogni caso se non erro notepad++ era in grado di aprire file unix.

Comunque, si, c'è da "divertirsi" con le specifiche dei vari s.o. e/o distribuzioni, nascondono molte insidie con cui prima o poi bisogna fare i conti.

Offline brunopython74

  • python unicellularis
  • *
  • Post: 4
  • Punti reputazione: 0
    • Mostra profilo
Re:Creare button in finestra.
« Risposta #8 il: Maggio 29, 2020, 23:28 »
Ho provato a eseguire lo script .....a me da errore in Style '!disable'