1

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()

newDataSet フレームのこれらのメソッドでわかるように、doneButton でいくつかの異なるコマンドを循環させたいと思います。

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()

私はかなり初心者ですが、これを作成するのに多くの作業が必要でした。私は自分がどこにいるのか本当に行き詰まっているので、創造的なインプットを使用することができました. このプログラムでフレームを一時停止し、ユーザーが次の各オブジェクト タイプの値変数にコンテンツを入力できるようにしたいと考えています。

現在、プログラムは createGroup 実行レベルで待機しません (createMember 部分に進むために別のクリックを待機することを期待しています)。代わりに、アスペクトが入力された直後にユーザーにメンバーを入力するように求めます。

これが抽象的すぎないことを願っています。助けようとする人に感謝します。

4

1 に答える 1