2017-02-28 6 views
0

Das Folgende ist ein Auszug aus meinem ersten Python-Projekt, an dem ich gerade arbeite.Checkbutton-Widget in Tkinter (OOP)

Ich kann die Check-Taste in die GUI hinzufügen, aber es ist praktisch nutzlos, weil ich nicht herausfinden kann, wie ich den Wert von der Checkbutton bekommen kann.

import tkinter as tk 
from tkinter import * 
class base(tk.Tk): 

    def __init__(self, *args, **kwargs): 

     tk.Tk.__init__(self, *args, **kwargs) 

     #tk.Tk.iconbitmap(self, "iconz.ico") 
     tk.Tk.wm_title(self, "Mandelbrot Renderer") 

     container = tk.Frame(self) 
     container.pack(side="top", fill="both", expand = True) 
     container.grid_rowconfigure(0, weight=1) 
     container.grid_columnconfigure(0, weight=1) 

     self.frames = {} 

     for F in (StartPage, MainPage): 
      frame = F(container, self) 
      self.frames[F] = frame 
      frame.grid(row=0, column=0, sticky="nsew") 

     self.show_frame(StartPage) 

    def show_frame(self, cont): 

     frame = self.frames[cont] 
     frame.tkraise() 

class MainPage(tk.Frame): 
    def getcheckvalue(self): 
     print (self.mvar.get()) 

    def __init__(self, parent, controller): 
     tk.Frame.__init__(self, parent) 
     label = tk.Label(self, text="Graph Page!", font=LARGE_FONT) 
     label.pack(pady=10,padx=10) 

     button1 = ttk.Button(self, text="Back to Home", 
         command=lambda: controller.show_frame(StartPage)) 
     button1.pack() 

     button2 = ttk.Button(self, text="Re-Render", 
         command=self.getcheckvalue) 
     button2.pack() 
     mvar = IntVar() 
     self.cbutton = ttk.Checkbutton(self, text="shadow",onvalue=1, offvalue=0, variable=mvar) 
     self.cbutton.pack() 


app = base() 
app.geometry ("800x600") 
app.mainloop() 
+0

Mögliche Duplikat [BoxState Tkinter überprüfen Erste] (http://stackoverflow.com/questions/4236910/getting-tkinter-check-box-state) – WhatsThePoint

Antwort

1
mvar = IntVar() 

In dieser Zeile erstellen Sie eine lokalenmvar. Um von außerhalb Ihrer __init__-Methode auf sie zuzugreifen, müssen Sie sie als Klassenvariable definieren, indem Sie das Präfix self. hinzufügen.

self.mvar = IntVar() 
self.cbutton = ttk.Checkbutton(..., variable=self.mvar) 
+0

Vielen Dank – Simon