2016-09-03 21 views
0

今はしばらく試してみましたが、辞書の内容をラベルに表示しているようです。私は、表示ボタンをヒットしたいと私はとき、私は私の辞書内のすべての内容は以下のコードを参照、表示したい:python tkinterのラベルに辞書の内容を表示

import sys 
from tkinter import * 
from tkinter import ttk 
import time 
from datetime import datetime 
now= datetime.now() 
x = [] 
d = dict() 
def quit(): 
    print("Have a great day! Goodbye :)") 
    sys.exit(0) 
def display(): 
    for key in d.keys(): 
     x.append(key) 
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") 
stock_Entry.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") 
Quantity_Entry.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) 

ttk.Label(mainframe, text= x).grid(column=0, row= 4, sticky=W) 

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

答えて

0

Label(..., text= x)は一度だけ表示されます - スタート時。

あなたは

x_var = StringVar() 
Label(..., texvariable=x_var) 

は今、あなたは自動的ところでLabel

x_var.set(x) 

に新しいテキストを設定するx_varに値を設定することができます期待して何をするStringVarを使用する必要があります。代わりに

for key in d.keys(): 
    x.append(key) 

おそらくあなたは

x = list(d.keys()) 

または多分

x = list(d) 

EDIT行う必要があります:あなたはボタン "表示"

import sys 

from Tkinter import * 
import ttk 
import time 
from datetime import datetime 

# --- functions ---- 

def quit(): 
    print("Have a great day! Goodbye :)") 
    sys.exit(0) 

def display(): 
    x_var.set(list(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 

# --- main --- 

x = list() 
d = dict() 

now = datetime.now() 

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

x_var = StringVar() 

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") 
stock_Entry.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") 
Quantity_Entry.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) 
ttk.Label(mainframe, textvariable=x_var).grid(column=0, row= 4, sticky=W) 

for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5) 
root.mainloop() 
を押したときに
表示(あなたのコードのように)すべてのキーを
+0

試してみるとうまくいかない –

+0

答えに新しいコードを見てください。 – furas