2015-01-20 2 views
-1

Здравствуйте, я создаю python tkinter gui, который использует walmarts api и позволяет вам искать любой элемент на основе идентификационного номера. То, что я не могу получить, это кнопка отправки, она ничего не сделает. Буду признателен за любую оказанную помощь.Python - gui - tkinter Получение значений записи

import tkinter as tk 
from tkinter import * 
import tkinter.messagebox 


def displayText(): 

    global queryurl 
    global ItemIdEntry 
    global GetItemId 


    if ItemIdEntry.get().strip() == "": 
    tkinter.messagebox.showerror("Item Checker", "Enter an item id number! ") 
    else: 
     try: 
      import urllib.request as urllib2 
     except ImportError: 
      import urllib2 

     import json 

     GetItemId = ItemIdEntry.get().strip() 



     queryurl = ('http://walmartlabs.api.mashery.com/v1/items/'+GetItemId+'?format=json&apiKey=phutmkv9t262zj7dmbk8hkec') 

     f = urllib2.urlopen(queryurl) 
     json_string = f.read().decode('utf-8') 
     parsed_json = json.loads(json_string) 

     itemName = parsed_json['name'] 
     currentprice = parsed_json['salePrice'] 
     upc = parsed_json['upc'] 
     producturl = parsed_json['productUrl'] 
     description = parsed_json['shortDescription'] 
     online = parsed_json['availableOnline'] 
     modelnumber = parsed_json['modelNumber'] 

     print ('Name:', itemName) 
     print ('Current Price:', '$', currentprice) 
     print ('Upc Number:', upc) 
     print ('Model Number:', modelnumber) 
     print ('Purchaseable Online:', online) 
     print ('Description:', description) 
     print ('Product Url:', producturl) 

     f.close() 


if __name__ == "__main__": 

    root = tk.Tk() 
    root.geometry("%dx%d+%d+%d" % (250, 100, 250, 100)) 
    var = tk.StringVar(root) 
    root.title("Item Checker") 

    itemName = Label(root, text="Please enter an id number") 
    itemName.pack(side = TOP) 

    ItemIdEntry = Entry(root, bd =5) 
    ItemIdEntry.pack(side = TOP) 

    submitbutton = tkinter.Button(root, text ="Submit", command = displayText)#Submit button 
    submitbutton.pack() 




root.mainloop() 
+1

Пожалуйста, постарайтесь быть более конкретным. Есть ли ошибка или вы не знаете, как заставить ее работать так, как вы хотите. – SSC

+0

У меня нет ошибок. Я просто не совсем понимаю, как заставить его работать. –

+0

«Не знаю, как заставить его работать». на самом деле не вопрос. Пожалуйста, будьте конкретны. Какая строка не работает, какие-либо ошибки? Какую ценность GetItemId следует использовать для тестирования? ожидаемый результат? – Marcin

ответ

1

Просто, чтобы сделать его оффициальным. Проблема заключалась в отступе. В частности, вместо этого:

if ItemIdEntry.get().strip() == "": 
tkinter.messagebox.showerror("Item Checker", "Enter an item id number! ") 

должно быть:

if ItemIdEntry.get().strip() == "": 
    tkinter.messagebox.showerror("Item Checker", "Enter an item id number! ") 
0

Что бы вы ожидали? Вы печатаете значения в этой функции. Вы не показываете их. Например, вместо этого;

print ('Name:', itemName) 

Вы должны использовать это;

lbl = Label(text="{}".format(itemName), fg="red",font="Times 35 bold") 
lbl.pack() 

Так что всякий раз, когда вы нажимаете кнопку, ваша функция будет отображать их.