2017-08-08 6 views
0

Tkinterを以前は使用していませんでした。 Windowsアイドルシェル。私はTkinterので作られた小さなGUIにゲームを入れたいTkinter確認ボタンとゲームのGUI(スプライス(?))

import time 
from tkinter import * 

input("Press enter to begin...") 

print ("Welcome Traveller!") 
time.sleep(1) 
def name_identify(): 
    print() 
    global name_input 
    name_input = input ("What is your name? ").lower() 
    name_input = name_input.title() 
    time.sleep(0.75) 
    def name_confirm(): 
     print() 
     print ("So %s is your name then?" % name_input) 
     time.sleep(1.5) 
     print() 
     confirmation = input ("Are you sure? Yes or No? ").lower() 
     if confirmation == "Yes" or confirmation == "yes" or confirmation == "aye" or confirmation == "yay": 
      print("") 
      print ("Then %s, let your adventure begin..." % name_input) 
     elif confirmation == "no" or confirmation == "No" or confirmation == "nay": 
      name_identify() 
     else: 
      print ("Please answer with either yes or no young traveller.") 
      time.sleep(2) 
      name_confirm() 
    name_confirm()   
name_identify() 

可能な場合にだけ」のような、私は必要な電源を入れたい、テストは人々がそれを再生するときにナビゲートしやすくするイムミニテキストアドベンチャーを作るために「はい」と「いいえ」の応答をボタンに入力する必要があるため、プレイヤーはキーボードをタッチして終了する必要はありません。問題は、どのように私が意図しているかを操作するボタンと共に、小さなtkinerインターフェイスにすべてのデータを取得する方法がわかりません。

非常に基本的なレベル(おそらく正しくない可能性があります)でボタンとボタン自体を保持するルートを作成できますが、パラメータと変数をボタンにリンクする方法やテキストの配置方法はわかりません作成されたコンソールに、私の試みは単にループやコンソールが開いていない状態で終了しました。

from tkinter import * 

def main(): 
    root = Tk() 
    root.title("Tkinter Test") 
    root.minsize(width=200, height=120) 
    root.maxsize(width=400, height=240) 

    button = Button(root, text="This is a button!", width=20, height=5) 
    button.pack() 

    root.mainloop() 
if __name__ == '__main__': 
    main() 

私はちょうどカスタマイズし、それが自分のニーズに合っまで変更することができるように大きな助けとなり、オフ動作するように、事前にも、テンプレートを助け、誰かがとても親切だろうかのように単純なテンプレートを作るために誰でも感謝下の画像に基づいて私にとっては、それに似た簡単な流れに従うことを願っているので、私は感謝しています。そして、イメージが十分にはっきりしない場合は申し訳ありません。ボタンとテキストを調整するためのアドバイスがあります。

Possible template, grateful for.

+0

レディー運が笑っています。 tKinterを初めてお使いになる方は、ここから始めてください:http://effbot.org/tkinterbook/ –

答えて

1

次のコードあなたがこれを達成する方法を示して説明するコメントされています

from tkinter import * 

root = Tk() #declares that the main window belongs to root 
frame = Frame(root) #creates a frame inside the main window so that we don't destroy the actual window when we refresh 

def command1(frame): 
    frame.destroy() #destroys the frame and everything in it 
    frame = Frame(root) #new frame 
    label1 = Label(frame, text="What is your name?") #text label 
    entry1 = Entry(frame) #entry widget 
    button1 = Button(frame, text="Ok", command=lambda:command2(frame, entry1)) #continue button 
    frame.pack() #packs item 
    label1.pack() #packs item 
    entry1.pack() #packs item 
    button1.pack() #packs item 

def command2(frame, entry1): 
    var = entry1.get() #gets the text entered in the last phase and stores it before the item is destroyed 
    frame.destroy() #destroys the frame and everything in it 
    frame = Frame(root) #new frame 
    label1 = Label(frame, text="So %s is your name then? Are you sure?" % var) #text label 
    button1 = Button(frame, text="Yes", command=lambda:command3(frame, var)) #yes button 
    button2 = Button(frame, text="No", command=lambda:command1(frame)) #no button 
    frame.pack() #packs item 
    label1.pack() #packs item 
    button1.pack() #packs item 
    button2.pack() #packs item 

def command3(frame, var): 
    frame.destroy() #destroys the frame and everything in it 
    frame = Frame(root) #new frame 
    label1 = Label(frame, text="Then %s, let your adventure begin..." % var) #text label 
    frame.pack() #packs item 
    label1.pack() #packs item 

label1 = Label(frame, text="Press below to begin...") #text label 
button1 = Button(frame, text="Begin", command=lambda:command1(frame)) #begin button 

frame.pack() #packs item 
label1.pack() #packs item 
button1.pack() #packs item 

root.mainloop() #starts event loop 

私はまだTkinterのための出発点としてhttp://effbot.org/tkinterbook/をお勧めします。


以下は、あなたが隣同士に二つのボタンを揃えることができます方法を示し、コードは、それが元で変化する場所を示すためにコメントしている:

from tkinter import * 

root = Tk() 
frame = Frame(root) 

def command1(frame): 
    frame.destroy() 
    frame = Frame(root) 
    label1 = Label(frame, text="What is your name?") 
    entry1 = Entry(frame) 
    button1 = Button(frame, text="Ok", command=lambda:command2(frame, entry1)) 
    frame.pack() 
    label1.pack() 
    entry1.pack() 
    button1.pack() 

def command2(frame, entry1): 
    var = entry1.get() 
    frame.destroy() 
    frame = Frame(root) 
    frame1 = Frame(frame) #creates lower frame 
    label1 = Label(frame, text="So %s is your name then? Are you sure?" % var) 
    button1 = Button(frame1, text="Yes", command=lambda:command3(frame, var)) #this button is now in the lower frame 
    button2 = Button(frame1, text="No", command=lambda:command1(frame)) #this button is now in the lower frame 
    frame.pack() 
    frame1.pack(side="bottom") #packs lower frame 
    label1.pack() 
    button1.pack(side="left") #packs button left 
    button2.pack(side="right") #packs button right 

def command3(frame, var): 
    frame.destroy() 
    frame = Frame(root) 
    frame1 = Frame(frame) 
    label1 = Label(frame, text="Then %s, let your adventure begin..." % var) 
    frame.pack() 
    label1.pack() 

label1 = Label(frame, text="Press below to begin...") 
button1 = Button(frame, text="Begin", command=lambda:command1(frame)) 

frame.pack() 
label1.pack() 
button1.pack() 

root.mainloop() 
+0

ボタンと新しい画面のリンクを作成するための基本を教えてくれてありがとう。あなたが提供したものを使って可能ならば、yesとno(command2)のボタンをお互いに簡単に並べて、ラベルのテキストの色を変更できますか?実際のテキストではなく、色でラベルを強調表示する方法を見つけました。できればありがとう。 –

+0

はい、それらは互いに隣り合うことができます。 'pack()'関数は '-side'属性を持っていますので、' side = "left" 'と' side = "right" 'を使用して整列させることができます。 packの他の属性を見て、それをどのようにしたいかを表示させる必要があります。フレームは、そのようにウィジェットを管理するのにも役立ちます。ラベルに関しては、フォアグラウンドカラーを意味する '-fg'属性を持っていますので、ラベルのどれかを' fg = "blue" 'と宣言するだけで色を変えることができます。 –

+0

私は既にパックの中で、左右のラベルに関してそれらを整列させた側で試していますが、隣り合わせに整列させるわけではありません。行があるので、それらはまだお互いの下にあります。 –