Python tkinter的entry.get()不起作用,我该如何解决?

时间:2016-09-02 10:01:43

标签: python user-interface tkinter

我正在为大学建立一个简单的计划。我们必须将代码转换为接口。我设法制作界面,但我似乎无法将我的值从Entry传递给实际代码。这是我的代码:

import sys
from tkinter import *
from tkinter import ttk
import time
from datetime import datetime
now= datetime.now()

d = dict()
def quit():
    print("Have a great day! Goodbye :)")
    sys.exit(0)
def display():
    print(str(d))
def add(*args): 
    global stock
    global d
    stock = stock_Entry.get()
    Quantity = Quantity_Entry.get()
    if stock not in d:
        d[stock] = Quantity
    else:
        d[stock] += Quantity




root = Tk()
root.title("Homework 5 216020088")

mainframe = ttk.Frame(root, padding="6 6 20 20")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))

ttk.Label(mainframe, text="you are accesing this on day %s of month %s of %s" % (now.day,now.month,now.year)+" at exactly %s:%s:%s" % (now.hour,now.minute,now.second), foreground="yellow", background="Black").grid(column=0, row = 0)

stock_Entry= ttk.Entry(mainframe, width = 60, textvariable="stock").grid(column=0, row = 1, sticky=W)
ttk.Label(mainframe, text="Please enter the stock name").grid(column=1, row = 1, sticky=(N, W, E, S))

Quantity_Entry= ttk.Entry(mainframe, width = 60, textvariable="Quantity").grid(column=0, row = 2, sticky=W)
ttk.Label(mainframe, text="Please enter the quantity").grid(column=1, row = 2, sticky=(N, W, E, S))

ttk.Button(mainframe, text="Add", command=add).grid(column=0, row=3, sticky=W)
ttk.Button(mainframe, text="Display", command=display).grid(column=0, row=3, sticky=S)
ttk.Button(mainframe, text="Exit", command=quit).grid(column=0, row=3, sticky=E)


for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
root.mainloop()

1 个答案:

答案 0 :(得分:1)

如果您以后仍需要访问它,则无法像这样同时创建窗口小部件和网格。 stock_Entry.get()会提出AttributeErrorNoneType)。

而不是:

stock_Entry= ttk.Entry(mainframe, width = 60, textvariable="stock").grid(column=0, row = 1, sticky=W)

使用:

stock_Entry = ttk.Entry(mainframe, width = 60, textvariable="stock")
stock_Entry.grid(column=0, row = 1, sticky=W)

Quantity_Entry

相同
Quantity_Entry = ttk.Entry(mainframe, width = 60, textvariable="Quantity")
Quantity_Entry.grid(column=0, row = 2, sticky=W)

......它有效:

enter image description here