Deaktivieren Sie die widgets mit dem checkbox"?
Wie kann ich deaktivieren Sie einen Eintrag über eine checkbox " ... ich habe dieses, aber es doens T Arbeit (python 2.7.1)...
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
from Tkinter import *
root = Tk()
class Principal(tk.Tk):
def __init__(self, *args, **kwargs):
foo = ""
nac = ""
global ck1
nac = IntVar()
ck1 = Checkbutton(root, text='Test',variable=nac, command=self.naccheck)
ck1.pack()
global ent
ent = Entry(root, width = 20, background = 'white', textvariable = foo, state = DISABLED)
ent.pack()
def naccheck(self):
if nac == 1:
ent.configure(state='disabled')
else:
ent.configure(state='normal')
app=Principal()
root.mainloop()
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machte ich foo und nac member-variable der Principal-Klasse
Dann in naccheck() self verweisen.nac
Vergessen Sie nicht, zu ändern ck1 ist variable = self.nac
und ent-die Bezeichnungen Textvariable = self.foo.
Auch, möchten Sie vielleicht, um ck1 und HNO-member-variable, wie Sie vielleicht Probleme haben, die auf Sie später mit naccheck()
Diese änderungen gearbeitet fein auf meinem Python2.7
Gibt es viele kleine Dinge, die falsch mit Ihrem code. Zum einen
Principle
erbt vontk.Tk
aber nicht importieren Tkinter unter dem Namentk
.Zweite, Sie brauchen keine globalen Variablen. Sie sollten mit Instanz-Variablen statt.
Dritten, seit der "nac" ist ein
IntVar
müssen Sie dieget
Methode, um den Wert.Schließlich, Sie sind mit
foo
als der Wert dertextvariable
Attribut, sondern Sie sind mit einem normalen Wert. Es muss ein Tk-variable (z.B.:StringVar
)Hier ist eine version des Codes, mit denen Dinge repariert:
Durch die Art und Weise, ob Sie
from Tkinter import *
oderimport Tkinter as tk
ist eine Sache des Stils. Ich mag letzteres, weil es hinterlässt keine Zweifel das Modul enthält den Namen der Klasse oder konstant. Dabei eineimport *
können Probleme verursachen, wenn Sie den import etwas mit einem Namen, der die Konfrontation mit den anderen code in Ihre Datei.import Tkinter as tk
aber klar, in deinem Beispiel sind Sie nicht. Ihr Beispiel zeigtfrom Tkinter import *