2017-02-28 94 views
0

以下是我目前正在研究的第一个python项目的摘录。Tkinter中的Checkbutton小部件(OOP)

我能够将检查按钮添加到GUI中,但它实际上是无用的,因为我无法找到如何从checkbutton获取值。

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

[获取Tkinter的复选框的状态]的可能的复制(http://stackoverflow.com/questions/4236910/getting-tkinter-check-box-state) – WhatsThePoint

回答

1
mvar = IntVar() 

在这一行,你要创建一个本地mvar。要从__init__方法之外访问它,您需要通过添加self.前缀使其变为类变量。

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

太谢谢你了 – Simon