Ho lavorato su un editor di testo usando Tkinter in Python 2.7. Una funzione che sto cercando di implementare è la modalità notturna, in cui l'utente può passare da uno sfondo nero a uno chiaro, che passa da chiaro a scuro con un clic del pulsante di attivazione/disattivazione.Python Tkinter: come creare un pulsante di attivazione/disattivazione?
#!/usr/bin/env python
from Tkinter import *
from tkSimpleDialog import askstring
from tkFileDialog import asksaveasfilename
from tkFileDialog import askopenfilename
from tkMessageBox import askokcancel
Window = Tk()
Window.title("TekstEDIT")
index = 0
/(code)/
class Editor(ScrolledText):
/(code)/
Button(frm, text='Night-Mode', command=self.onNightMode).pack(side=LEFT)
/(code)/
def onNightMode(self):
if index:
self.text.config(font=('courier', 12, 'normal'), background='black', fg='green')
else:
self.text.config(font=('courier', 12, 'normal'))
index = not index
Tuttavia, durante l'esecuzione del codice, è sempre in modalità notte e l'interruttore non funziona. Aiuto. Codice sorgente: http://ideone.com/IVJuxX
il 'UnboundLocalError' è a causa dell'assegnazione a 'index' che la rende una variabile locale di default quando si desidera che si riferisca alla variabile globale. La soluzione rapida consiste nell'aggiungere l'istruzione 'indice globale' all'interno della funzione. Ma una soluzione migliore sarebbe evitare di usare un mutabile globale e invece rendere 'index' un attributo di istanza,' self.index'. – unutbu