Python t按下按钮生成列表

Python t按下按钮生成列表,python,button,tkinter,Python,Button,Tkinter,我试图建立一个系统,其中按钮是从一个列表中生成的,当按下每个按钮时,该按钮消失并更新列表中的一个值,该列表中的值是按按钮按下的顺序创建的,即[1,3,2,4]意味着先按下第一个按钮,然后按下第三个、第二个按钮等 我现在已经把它放在了按钮消失的阶段,但是我还不能让它增加它的顺序或者生成一个列表 def buttonSelected(k, buttonNames, order, itemButton, buttonOrder): order = order + 1 itemButto

我试图建立一个系统,其中按钮是从一个列表中生成的,当按下每个按钮时,该按钮消失并更新列表中的一个值,该列表中的值是按按钮按下的顺序创建的,即[1,3,2,4]意味着先按下第一个按钮,然后按下第三个、第二个按钮等

我现在已经把它放在了按钮消失的阶段,但是我还不能让它增加它的顺序或者生成一个列表

def buttonSelected(k, buttonNames, order, itemButton, buttonOrder):
    order = order + 1
    itemButton[k].destroy()
    buttonOrder[k] = order

    orderText = ["first, second, third"]
    if order <= 2:
        lbl.configure(text="Which button do you want to click first?")
    else:
        lbl.configure(text="Which button do you want to click %sth?" % order)
    return order

def chooseOrder(buttonNames, order, buttonOrder):
    orderText = ["first, second, third"]
    itemButton = []

    for i in range(len(buttonNames)):
        print i
        itemButton.append('')
        itemButton[i] = tkinter.Button(window, text=buttonNames[i], command=lambda c=i: buttonSelected(c, buttonNames, order, itemButton, buttonOrder), font=("Helvetica", 10))
        itemButton[i].pack()

    if order <= 2:
        lbl.configure(text="Which button do you want to click first?")
    else:
        lbl.configure(text="Which button do you want to click %sth?" % order)

buttonOrder = []
for i in range(len(buttonNames)):
        buttonOrder.append(0)

chooseOrder(buttonNames, 0, buttonOrder)
def buttonSelected(k,buttonNames,order,itemButton,buttonNorder):
订单=订单+1
itemButton[k]。销毁()
按钮编号[k]=订单
orderText=[“第一、第二、第三”]
如果顺序
结果=[]
已选择def模块(k、所需模块、订单、项目按钮、模块订单):
订单=订单+1
#对于范围内的j(len(itemButton)):
itemButton[k]。销毁()
moduleOrder[k]=订单
打印k
结果追加(k+1)
打印结果#->这将打印您想要的输出。
#选择订单(想要的模块、订单)
orderText=[“第一、第二、第三”]

如果订购,您可以发布您的完整代码。到目前为止,您所提供的不会自动执行。我现在已经添加了它。谢谢你的阅读!这已经奏效了。使用这样的全局变量确实让人觉得很奇怪。@JameswDemps您可以随意更改它。我只是想看看能不能得到你想要的结果。
# import and rename the 'tkinter' module for < Python 3.3
import Tkinter as tkinter
import os

class Checkbar(tkinter.Frame):
    def __init__(self, parent=None, picks=[], side=tkinter.TOP, anchor=tkinter.W):
        tkinter.Frame.__init__(self, parent)
        self.vars = []
        for pick in picks:
            var = tkinter.IntVar()
            chk = tkinter.Checkbutton(self, text=pick, variable=var, font=("Helvetica", 10))
            chk.pack(side=side, anchor=anchor, expand=tkinter.YES)
            self.vars.append(var)
    def state(self):
        return map((lambda var: var.get()), self.vars)

def moduleSelected(k, wantedModules, order, itemButton, moduleOrder):
    order = order + 1
    #for j in range(len(itemButton)):
    itemButton[k].destroy()
    moduleOrder[k] = order

    #chooseOrder(wantedModules, order)
    orderText = ["first, second, third"]
    if order <= 2:
        lbl.configure(text="Which item do you want appearing first?")
    else:
        lbl.configure(text="Which item do you want appearing %sth?" % order)
    if order == len(moduleOrder):
        moduleOrder1Finished = 1
    return order

def chooseOrder(wantedModules, order, moduleOrder):
    orderText = ["first, second, third"]
    itemButton = []

    for i in range(len(wantedModules)):
        print i
        itemButton.append('')
        itemButton[i] = tkinter.Button(window, text=wantedModules[i], command=lambda c=i: moduleSelected(c, wantedModules, order, itemButton, moduleOrder), font=("Helvetica", 10))
        itemButton[i].pack()
    print wantedModules

    if order <= 2:
        lbl.configure(text="Which button do you want appearing first?")
    else:
        lbl.configure(text="Which button do you want appearing %sth?" % order)

def chooseOrders(moduleList, moduleSelectColumn, order):
    wantedModules = []
    moduleOrder = []

    for i in range(len(moduleList)):
        if moduleList[i] == 1:
            wantedModules.append(moduleSelectColumn[i])
            moduleOrder.append(0)

    chooseOrder(wantedModules, order, moduleOrder)



def modulesSelected(modules1, moduleSelectColumn1, modules2, moduleSelectColumn2, moduleSelectButton):
    moduleList1 = modules1.state()
    moduleList2 = modules2.state()
    modules1.destroy()
    modules2.destroy()
    moduleSelectButton.destroy()

    moduleOrder1 = chooseOrders(moduleList1, moduleSelectColumn1, 0)
    moduleOrder2 = chooseOrders(moduleList2, moduleSelectColumn2, 0)

def produceSurvey():
    moduleSelectColumn = []
    for i in range(4):
        moduleSelectColumn.append([])

    moduleSelectColumn[1] = ['cheese', 'wine', 'bread', 'cereal']

    moduleSelectButton = tkinter.Button(window, text="Finish Selecting", bg="#ffffff", font=("Helvetica", 16), command=lambda: modulesSelected(modules1, moduleSelectColumn[1], modules2,moduleSelectColumn[2], moduleSelectButton))
    moduleSelectButton.pack(side=tkinter.TOP)
    modules1 = Checkbar(window, moduleSelectColumn[1])
    modules2 = Checkbar(window, moduleSelectColumn[2])
    modules1.pack(side=tkinter.LEFT)
    modules2.pack(side=tkinter.RIGHT)

    lbl.configure(text="Select which buttons you want to Select?")
    window.geometry("720x720")


def analSurvey():
    print "analysing survey!"

def optionButton(option, option1, option2):
    option1.destroy()
    option2.destroy()
    if option == 1:
        produceSurvey()
    elif option == 2:
        analSurvey()

def callback_and_hide(button):
    callback()
    button.destroy()

def callback():
    lbl.configure(text="What would you like to do?")
    option1 = tkinter.Button(window, text="Help JameswDemps on stackexchange", bg="#ffffff", font=("Helvetica", 16), command=lambda: optionButton(1, option1, option2))
    option1.pack()
    option2 = tkinter.Button(window, text="go to a blank page", bg="#ffffff", font=("Helvetica", 16), command=lambda: optionButton(2, option1, option2))
    option2.pack()

# create a new window
window = tkinter.Tk()
# set window title
window.title("Button Presser")

# Gets the requested values of the height and widht.
windowWidth = window.winfo_reqwidth()
windowHeight = window.winfo_reqheight()

# Gets both half the screen width/height and window width/height
positionRight = int(window.winfo_screenwidth()/2 - windowWidth/2)
positionDown = int(window.winfo_screenheight()/2 - windowHeight/2)

# Positions the window in the center of the page.
window.geometry("+{}+{}".format(positionRight-250, positionDown-150))
window.geometry("720x480")

# set the window background to hex code ...
window.configure(background="#ffffff")

# create a label widget call 'lbl'
lbl = tkinter.Label(window, text="Welcome to the Button presser!", bg="#ffffff", font=("Helvetica", 24))
# creat a text entry widget called 'ent'
#ent = tkinter.Entry(window)


# create a button widget called btn
startBtn = tkinter.Button(window, text="Start", command=lambda: callback_and_hide(startBtn), font=("Helvetica", 16))
# pack (add) the widget into the window
lbl.pack()
#ent.pack()
startBtn.pack()

# draw the window, and start the 'application'
window.mainloop()
RESULT = []

def moduleSelected(k, wantedModules, order, itemButton, moduleOrder):
    order = order + 1
    #for j in range(len(itemButton)):
    itemButton[k].destroy()
    moduleOrder[k] = order
    print k
    RESULT.append(k+1)
    print RESULT # -> This will print the output you want.
    #chooseOrder(wantedModules, order)
    orderText = ["first, second, third"]
    if order <= 2:
        lbl.configure(text="Which item do you want appearing first?")
    else:
        lbl.configure(text="Which item do you want appearing %sth?" % order)
    if order == len(moduleOrder):
        moduleOrder1Finished = 1
    return order