我正在使用 Python 3.1 和 Tk 将一些东西放在一起。
我想循环浏览我在这里定义的“NewDataFrame”对象的不同方法:
from tkinter import *
from tkinter import ttk
import string
root = Tk()
mainframe = ttk.Frame(root)
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
value = StringVar()
dataname = StringVar()
class MenuFrame:
def __init__(self, parent):
self.myParent = parent
self.menuFrame = ttk.Frame(self.myParent)
self.newButton = ttk.Button(self.myParent, text="new dataset", command=self.newClick)
self.loadButton = ttk.Button(self.myParent, text="load dataset", command=self.loadClick)
self.menuFrame.grid(column=0, row=0)
self.newButton.grid()
self.loadButton.grid()
def newClick(self):
self.instructions = ttk.Label(self.menuFrame, text="enter a name for your new dataset")
self.instructions.grid()
self.nameEntry = ttk.Entry(self.menuFrame, textvariable=dataname)
self.enterName = ttk.Button(self.menuFrame, text="enter", command=self.newData)
self.nameEntry.grid()
self.enterName.grid()
类 NewDataFrame:
def __init__(self, parent, dataname):
self.myParent = parent
self.newDataFrame = ttk.Frame(parent)
self.dataSet = DataSet(dataname)
self.instructions = ttk.Label(self.newDataFrame)
self.instructions.configure(text="enter aspects of %s, separated by commas" % (self.dataSet.getName()))
self.enterBar = ttk.Entry(self.newDataFrame, textvariable=value)
self.enterButton = ttk.Button(self.newDataFrame, text="ENTER", command=self.enterClick)
self.doneButton = ttk.Button(parent, text="DONE", command=self.createAspects)
self.newDataFrame.grid()
self.enterBar.grid()
self.goingOn.grid()
self.instructions.grid()
self.enterButton.grid()
self.doneButton.grid()
我希望 doneButton 循环执行几个不同的命令,正如您在 newDataSet 框架的这些方法中看到的那样:
def createAspects(self):
for asp in (value.get().split(',')):
aspect = Aspect(self.dataSet.getName(), asp)
self.dataSet.addAspect(aspect)
for a in self.dataSet.getAspects():
self.createFile(i=a.getName())
self.instructions.configure(text="enter groups of %s, separated by commas" % (a.getName()))
self.doneButton.configure(command=self.createGroups(aspect=a))
def createGroups(self, aspect=""):
for gro in (value.get().split(',')):
print(gro)
group = Group(self.dataSet.getName(), aspect.getName(), gro)
aspect.addGroup(group)
for group in aspect.getGroups():
self.createFile(i=aspect.getName(), j=group.getName())
self.instructions.configure(text="enter members of %s, separated by commas" % (group.getName()))
self.doneButton.configure(command=self.createMembers(aspect=aspect, group=group))
def createMembers(self, aspect="", group=""):
for mem in (value.get().split(',')):
member = Member(self.dataSet.getName(), aspect.getName(), group.getName(), mem)
group.addMember(member)
for mem in group.getMembers():
self.createFile(i=aspect.getName(), j=group.getName(), k=mem.getName())
menuFrame = MenuFrame(mainframe)
root.mainloop()
我是一个大菜鸟,但这需要我做很多工作才能制作,而且我真的被困在了我的位置,所以我可以使用一些创造性的输入。我希望这个程序暂停框架并允许用户在 value 变量中为以下每个对象类型输入内容:方面,将包含组,将包含成员(像树形图一样组织)。
目前,该程序不会在 createGroup 执行级别等待(我希望它等待另一次单击以继续进行 createMember 部分) - 而是在输入方面后立即要求用户输入成员。
我希望这不是太抽象,非常感谢任何试图提供帮助的人。