我有一个嵌套的数据列表(三维),我编写了一个程序,给我一个通用的数据分析,并以图形方式报告。
我想通过推动TKINTER按钮来完成这些图表。
我已将按钮指定为$question->answers->add(new Answer([...]));
并拥有tkinter command=NextDataSet
。存在一个非常好的tk.mainloop()
函数。
然而,写graphData()
已经变成了令人困惑的经历。
我考虑过运行主列表中的每个项目,但我希望每次都停止。因此,我没有在命令中放置循环。
NextDataSet
有关如何使用tkinter鼠标按钮事件逐个显示列表中的下一个数据集的任何想法?我考虑来回传递参数......
答案 0 :(得分:1)
使用简单的计数器可以完成下一个数据集。请注意,CamelCaseNames用于类。函数使用所有lower_case_with_underscores。它可以帮助其他人阅读和理解您的代码。
import sys
if sys.version_info[0] < 3:
import Tkinter as tk ## Python 2.x
else:
import tkinter as tk ## Python 3.x
class CycleThroughClass(object):
def __init__(self, master):
self.display_1=tk.Label(master, bg="lightblue")
self.display_1.grid(row=0, column=0, sticky="nsew")
self.display_2=tk.Label(master, bg="lightgreen")
self.display_2.grid(row=0, column=1, sticky="nsew")
tk.Button(master, text="next item", bg="khaki",
command=self.next_data_set).grid(row=1,
column=0, sticky="nsew")
tk.Button(master, text="Quit", bg="orange",
command=master.quit).grid(row=2, column=0, sticky="nsew")
self.ctr=0
self.questions=[["one", 1], ["two", 2], ["three", 3],
["four", 4], ["five", 5]]
self.next_data_set()
def next_data_set(self):
if self.ctr < len(self.questions):
question, number=self.questions[self.ctr]
self.display_1.config(text=question)
self.display_2.config(text=str(number))
self.ctr += 1
else:
self.display_1.config(text="Sorry, no more")
self.display_2.config(text="")
master=tk.Tk()
CT=CycleThroughClass(master)
master.mainloop()