2017-10-10 10 views
0
def roll(): 

    result_Dice = random.randint(1, 6) 

def read_dice_lines(): 

    file2 = open(dice_file_name + '.txt') 
    lines = file2.read().split(',') 
    file2.close() 

    mainMenu.destroy() 
    rollDice = tkinter.Tk() 
    rollDice.title("Roll That Dice!") 

    lblRollOutput = tkinter.Label(rollDice, text="") 
    btnRoll = tkinter.Button(rollDice, text="Roll me!", command=roll) 

    if diceOutPut == "1": 
     lblRollOutput.config(text=lines[0]) 
    elif diceOutPut == "2": 
     lblRollOutput.config(text=lines[1]) 
    elif diceOutPut == "3": 
     lblRollOutput.config(text=lines[2]) 
    elif diceOutPut == "4": 
     lblRollOutput.config(text=lines[3]) 
    elif diceOutPut == "5": 
     lblRollOutput.config(text=lines[4]) 
    elif diceOutPut == "6": 
     lblRollOutput.config(text=lines[5]) 
    else: 
     lblRollOutput.config(text="There has been an error, sorry.") 

def createDice(): 

    mainMenu.destroy() 

    global createMenu 
    createMenu = tkinter.Tk() 
    createMenu.title("Dice Maker.") 

    global lblName 
    global entName 
    global lblOutcomes 
    global entOut1 
    global entOut2 
    global entOut3 
    global entOut4 
    global entOut5 
    global entOut6 
    global btnConfirm 

    lblName = tkinter.Label(createMenu, text="What would you like to call your dice? Dont put .[file type] at the end.") 
    entName = tkinter.Entry(createMenu) 
    lblOutcomes = tkinter.Label(createMenu, text="Enter the outcomes for the dice, the bottom one is outcome 6.") 

    entOut1 = tkinter.Entry(createMenu) 
    entOut2 = tkinter.Entry(createMenu) 
    entOut3 = tkinter.Entry(createMenu) 
    entOut4 = tkinter.Entry(createMenu) 
    entOut5 = tkinter.Entry(createMenu) 
    entOut6 = tkinter.Entry(createMenu) 
    btnConfirm = tkinter.Button(createMenu, text="Confirm", command=createDice2) 

    lblName.pack() 
    entName.pack() 
    lblOutcomes.pack() 
    entOut1.pack() 
    entOut2.pack() 
    entOut3.pack() 
    entOut4.pack() 
    entOut5.pack() 
    entOut6.pack() 
    btnConfirm.pack() 

def createDice2(): 

    global name 
    global nameTxt 
    global out1 
    global out2 
    global out3 
    global out4 
    global out5 
    global out6 

    name = entName.get() 
    nameTxt = name + ".txt" 
    out1u = entOut1.get() 
    out2u = entOut2.get() 
    out3u = entOut3.get() 
    out4u = entOut4.get() 
    out5u = entOut5.get() 
    out6u = entOut6.get() 

    out1 = out1u + "\n" 
    out2 = out2u + "\n" 
    out3 = out3u + "\n" 
    out4 = out4u + "\n" 
    out5 = out5u + "\n" 
    out6 = out6u + "\n" 

    f = open(nameTxt, 'w') 
    f.write(out1) 
    f.write(out2) 
    f.write(out3) 
    f.write(out4) 
    f.write(out5) 
    f.write(out6) 
    f.close() 

    createMenu.destroy() 
    restartpls = tkinter.Tk() 
    restartpls.title("Restart this program") 

    lblrestart = tkinter.Label(restartpls, text="Please restart this program, this is needed so that\n the program can see that you have created\n a new dice.") 
    lblrestart.pack() 

    restartpls.mainloop() 
    sys.exit() 

def loadDice(): 
    for dice_file_name in glob.glob('*.txt'): 
     print(dice_file_name) 
     btnDie = tkinter.Button(frameCustomDice, text=os.path.splitext, command=read_dice_lines(dice_file_name)[0]) 
     btnDie.pack() 
     mainMenu.update() 
def exit(): 

    sys.exit() 

def mainMenu(): 
    global mainMenu 
    mainMenu = tkinter.Tk() 
    mainMenu.title("Menu") 

    global frameCustomDice 
    frameCustomDice = tkinter.Frame(height=2, bd=1, relief=tkinter.SUNKEN) 

    btnCreateDice = tkinter.Button(mainMenu, text="Create Dice", command=createDice) 
    btnLoadDice = tkinter.Button(mainMenu, text="Load Dice", command=loadDice) 
    btnExit = tkinter.Button(mainMenu, text="Exit", command=exit) 

    btnCreateDice.pack() 
    btnLoadDice.pack() 
    frameCustomDice.pack() 
    btnExit.pack() 

    mainMenu.mainloop() 
mainMenu() 

私は独自のダイスを作成して使用できるプログラムを作成しています。私のコードの上に、私はサイコロのファイルにある6行すべてをリストに入れようとしています。コードを実行して 'Load Dice'を押すと、というエラーが表示されます:btnDie = tkinter.Button(frameCustomDice、text = os.path.splitext、command = read_dice_lines(dice_file_name)[0]) TypeError:read_dice_lines )は0の位置引数をとりますが、1が与えられました。これをどのように修正しますか?ご協力いただければ幸いです。ファイル(Python)から行を読み取る際にエラーが発生しました

+0

非常に多くの 'global'変数はなぜですか? – pstatix

+0

私はどこか別の場所で使う必要があるので、すでにグローバルになっているはずです。 –

+0

次に、引数を渡してローカル変数を効果的に使用するように再設計する必要があります。 – pstatix

答えて

0

受け付ける関数にその引数を追加する必要があります。あなたは何も返さないread_dice_linesとして、あなたは追加の問題に実行しようとしているここcommand=read_dice_lines(dice_file_name)[0]それを呼び出しているように、ヘッドアップとして

def read_dice_lines(dice_file_name): 

ので、それは以下となります。これは、現在のdef read_dice_lines():

変更していますデフォルトはNoneです。そして、最初のエレメット[0]をNoneにしようとすると、エラーが発生します。したがって、[0]を削除するか、リスト、タプルなどのインデックスを返す必要があります。

関連する問題