我是python的新手,虽然很少进行在线培训。我无法与下面的问题有任何密切关系。
我正在使用tkinter GUI
from Tkinter import *
root = Tk()
trainings = {"title":"Python Training Course for Beginners",
"location":"Frankfurt",
"ID": 111,"title":"Intermediate Python Training",
"location":"Berlin",
"ID": 133,"title":"Python Text Processing Course",
"location":"Mdsgtd",
"ID": 122}
for key in trainings.keys():
x = trainings.get(key)
print x
Label(root, text = x ).pack()
mainloop()
仅获取输出:122
但我希望结果应该显示在GUI Label中:
{'ID': 111, 'location': 'Frankfurt', 'title': 'Python Training Course for Beginners'}
{'ID': 122, 'location': 'Mdsgtd', 'title': 'Python Text Processing Course'}
{'ID': 133, 'location': 'Berlin', 'title': 'Intermediate Python Training'}
我可以在函数标签内部使用,如下面的代码:这不起作用:
def OnButtonClick(self):
self.top= Toplevel()
self.top.title("Read Data Service Menu Item")
self.topdata = {'parakeet': ['fly', 'bird'], 'dog': 'animal', 'cat': 'feline'}
for key in self.topdata.keys():
x = self.topdata.get(key)
self.topL2 = Label(self.top, text = key).pack()
self.top.resizable(1,0)
self.top.transient(self)
self.B1.config(state = 'normal') #disable/normal
self.topButton = Button(self.top, text = 'Close', command = self.OnChildClose)
self.topButton.pack()
答案 0 :(得分:1)
如评论中所述,您目前有一些问题。首先,您应该将trainings
词典更改为词典列表,以便依次存储每门课程的相关信息。
假设您想为与每门课程相关的信息显示不同的标签,以下内容应该有效:
from Tkinter import *
courses = [{"title": "Python Training Course for Beginners",
"location": "Frankfurt",
"ID": 111},
{"title": "Intermediate Python Training",
"location": "Berlin",
"ID": 133},
{"title": "Python Text Processing Course",
"location": "Mdsgtd",
"ID": 122}]
root = Tk()
for course in courses:
temp_text = '{0} ({1}) - {2}'.format(course['title'], course['ID'], course['location'])
Label(root, text=temp_text).pack()
mainloop()
我们使用字符串格式来创建一个写得很好的输出,课程名称后跟括号中的ID,然后是破折号后课程的位置。
这里的关键是我们要为每个课程创建一个Label
小部件 - 因此,我们在for循环中添加新的Label
以确保这种情况发生。