0

main() 関数が getWordUser() 関数を呼び出してボタンを作成するようにしようとしています。ボタンが押されると、Word_and_Username() 関数が呼び出され、ユーザー名と単語が返されます。どういうわけか、私はそれを機能させることができません。コードは次のとおりです。

from tkinter import*
import random
root = Tk()
root.title("Hangman")
root.geometry("200x200")
username = ""

def Word_and_Username():
    file = open("Hangmanwords.txt","r")
    randomize = random.randint(1,117)
    words = file.readlines()
    line = words[randomize]
    word = line[:-1]
    username = root.username.get()

    return word,username

def getWordUser():
    root.username = Entry()
    root.username.grid(row=1, column=0)

    root.theGame = Button(text = "Continue", command=Word_and_Username)
    root.theGame.grid(row=1, column=1)

def main():
    getWordUser()
    print (username)



main()
root.mainloop()

基本的に、関数を呼び出すにはメインが必要です。続行ボタンが押されるまで待ってから、メイン関数を続行しながら変数をメインに戻します。ありがとう。

4

1 に答える 1

0

ルートプロパティに値を割り当てることで、値を保存して、非常に簡単な方法で使用できるようにすることができます。これは、それを示す変更されたスクリプトです。「知っていること」を押すと、特定のユーザーの単語がシェルに表示されます。

from Tkinter import*
import random
root = Tk()
root.title("Hangman")
root.geometry("250x200")
root.word = None
root.user = None

def Word_and_Username():
    file = open("C:/test/test.csv","r")
    randomize = random.randint(1,4)
    words = file.readlines()
    line = words[randomize]
    root.word = line[:-1]
    root.user = root.username.get()

def getWordUser():
    root.username = Entry()
    root.username.grid(row=1, column=0)

    root.theGame = Button(text = "Continue", command=Word_and_Username)
    root.theGame.grid(row=1, column=1)

    root.ask = Button(text = "What I know", command=ask)
    root.ask.grid(row=2, column=1)

def ask():
    print 'word is %s for user %s' %(root.word, root.user)


getWordUser()
root.mainloop() 
于 2012-06-17T12:42:15.067 に答える