在使用类时,如何获取tkinter中项目的值?

时间:2016-06-22 20:06:48

标签: python python-3.x tkinter

我想学习一点tkinter。我在Youtube上跟随sentdex的几个指南,感觉我对基础知识有很好的理解。但是,现在我正在尝试编写一个快速日志的脚本,我遇到了从条目/文本/选项菜单中获取文本的问题。

如果我在课外设置gui,我可以简单地做一个variable.get(),而且一切都很困难。但是当我在课堂上学习gui tkinter时,我会得到一个未定义的异常。

这是我的代码。问题出在def saveButtonCommand(self):

如何获取noteText和officeOption / Var的值?

result

1 个答案:

答案 0 :(得分:2)

我修好了,你应该使用自己。"变量名"声明一个可访问的属性。

from tkinter import *
from tkinter import messagebox
import sys, datetime

class Window(Frame):

def __init__(self, master = None):
    Frame.__init__(self, master)
    self.master = master
    self.init_window()

def init_window(self):
    self.master.title("SPL - " + str(datetime.date.today()))
    self.configure(background="#e7e7e7")
    self.pack(fill=BOTH, expand=1)

    # Menu -> Quit, Open Log

    menu = Menu(self.master)
    self.master.config(menu=menu)

    file = Menu(menu)
    file.add_command(label="Open Log")
    file.add_command(label="Quit", command=self.client_exit)
    menu.add_cascade(label="File", menu=file)

    # Window Items

    # Office Drop Down
    OFFICES = [
        "County Building",
        "Adult Probation",
        "Building & Zoning",
        "Circuit Court",
        "    - CC. Family Division",
        "    - CC. Friend of the Court",
        "    - CC. Juvenile Division",
        "Clerk",
        "Commissioners",
        "Computer Infomration Systems",
        "Corporation Counsel",
        "District Court",
        "    - DC. Community Corrections",
        "    - DC. Magistrate Office",
        "    - DC. Probation Office",
        "Economic Development Corp.",
        "Equalization",
        "Maintenance",
        "Probate Court",
        "Prosecuting Attorney",
        "Public Guardian",
        "Register of Deeds",
        "Sheriff Department",
        "    - SD. Booking",
        "    - SD. Kitchen",
        "    - SD. Records",
        "    - SD. Squadroom",
        "Social Security",
        "Tax Mapping/GIS",
        "Treasurer",
        "Veteran's"
    ]

    officeLabel = Label(self, text="Office:", fg="#000000", bg="#e7e7e7", font="Verdana 10")
    officeLabel.place(x=5,y=5)

    self.officeOptionVar = StringVar()
    self.officeOptionVar.set(OFFICES[0]) # Default Value

    officeOption = OptionMenu(self, self.officeOptionVar, *OFFICES)
    officeOption.place(x=5,y=28,width=310)

    # Note
    noteLabel = Label(self, text="Note:", fg="#000000", bg="#e7e7e7",      font="Verdana 10")
    noteLabel.place(x=5,y=58)

    self.noteText = Text()
    self.noteText.place(x=5, y=81, width=310, height=225)

    # Save Button
    saveButton = Button(self, text='Save', command=self.saveButtonCommand)
    saveButton.place(x=5, y=312, width=310, height=50)

def client_exit(self):
    exit()

def saveButtonCommand(self):
    office = self.officeOptionVar.get()
    note = self.noteText.get("1.0","end-1c")
    messagebox.showinfo(title="Test", message=note)

 root = Tk()
 root.resizable(0,0)

 screen_width = root.winfo_screenwidth()
 screen_height = root.winfo_screenheight()

 geo_width = 320
 geo_height = 370
 geo_offset_w = int((screen_width/2)-(geo_width/2))

 root.geometry(str(geo_width) + "x" + str(geo_height) + "+" + str(geo_offset_w) + "+200")


 app = Window(root)
 root.mainloop()