2012-04-07 7 views
2

私はユーザーが入力ウィジェットを使って「ユーザー名」を入力できるゲームを作成しようとしています。今のところ、タイトル画面をロードするプログラムが必要です。その後、ボタンをクリックすると、新しい「セットアップ」ウィンドウが表示され、ユーザー名を入力するように求められ、ボタンをクリックするとセットアップウィンドウが表示されます離れて、私は "USERNAME:[あなたの名前はここ]"というラベルの付いたゲームウィンドウを持っています。別のウィンドウに入力テキストを取り込む方法は?

誰もがこれを手伝ってくれますか?

(編集:ここで私は現在、スペイン語でコードされて半分のため申し訳ありません

from tkinter import * 
import random 
import os 
import time 
import math 

def cargarimagen(nombre): 
    ruta=os.path.join('Images',nombre) 
    imagen=PhotoImage(file=ruta) 
    return imagen 

def operacion(): 
    num1=random.randint(0,255) 
    num2=random.randint(0,255) 
    op=random.randint(0,4)  
    if op == 0: 
     prompt= (hex(num1)[2:].upper() + " + " + hex(num2)[2:].upper()) 
     answer= num1 + num2 
    if op == 1: 
     prompt= (hex(num1)[2:].upper() + " - " + hex(num2)[2:].upper()) 
     answer= num1 - num2 
    if op == 2: 
     prompt= (hex(num1)[2:].upper() + " C16") 
     answer= (16**2) - num1 
    if op == 3: 
     prompt= (hex(num1)[2:].upper() + " C15") 
     answer= (16**2) - num1 - 1 
    return prompt 


def changeName(): 
    name = setup.yourName.get() 
    GameWindow.labelText.set(name) 
    setup.yourName.delete(0, END) 
    setup.yourName.insert(0, ' ') 
    return 

def play(): 
    return GameWindow() + changeName() 

root= Tk() 
root.title('Polyominos Start Menu') 
root.minsize(640,480) 
root.maxsize(640,480) 

class MainWindow: 
    def __init__(self,parent): 
     self.contenedor=Canvas(parent,width=640,height=480) 
     self.contenedor.place(x=0,y=0) 
     self.foto=cargarimagen('Tetris.gif') 
     self.label_fondo=Label(self.contenedor,image=self.foto) 
     self.label_fondo.place(x=0,y=0) 
     self.but=Button(root, text="START",font="Helvetica",width=10,height=2,bg='White',command=SetupWindow) 
     self.but.place(x=213,y=413) 
     self.about=Button(root, text="ABOUT",font="Helvetica",width=10,height=2,bg='White',command=AboutWindow) 
     self.about.place(x=320,y=413) 


def SetupWindow(): 
    setup=Toplevel() 
    setup.minsize(124,190) 
    setup.maxsize(124,190) 
    setup.title('Set Up') 
    frame = Frame(setup,bg ="White") 
    frame.grid() 
    lab1= Label(frame, text='Enter your name:', bg ="White").grid(column=0, row=0) 

    custName = StringVar(None) 
    yourName = Entry(frame, textvariable=custName, bg ="White").grid(column=0, row=1) 

    lab2= Label(frame, text=' ', bg ="White").grid(column=0, row=2) 
    lab3= Label(frame, text='Pick a difficulty:', bg ="White").grid(column=0, row=3) 
    diff = StringVar() 
    diff.set(None) 
    radio1 = Radiobutton(frame, text='Easy', value='Easy', variable = diff, bg ="White").grid(column=0,row=4) 
    radio1 = Radiobutton(frame, text='Medium', value='Medium', variable = diff, bg ="White").grid(column=0,row=5) 
    radio1 = Radiobutton(frame, text='Hard', value='Hard', variable = diff, bg ="White").grid(column=0,row=6) 
lab4= Label(frame, text=' ', bg ="White").grid(column=0, row=7) 
    playnow= Button(frame, text='READY', command=play, bg ="White").grid(column=0,row=8) 
lab5= Label(frame, text=' ', bg ="White").grid(column=0, row=9) 


def GameWindow(): 
    root.withdraw() 
    GameWindow=Toplevel() 
    GameWindow.minsize(595,300) 
    GameWindow.maxsize(595,300) 
    GameWindow.title('Polyominos') 
    operaciones=Frame(GameWindow,width=300,height=300, bg='white', highlightthickness=5, highlightbackground='black') 
    operaciones.place(x=0, y=0) 

    labelText = StringVar() 
    labelText.set('USER') 
    usrname = Label(operaciones, textvariable=labelText) 
    usrname.place(x=80, y=20) 

    cubos=Frame(GameWindow,width=300,height=300, bg="white", highlightthickness=5, highlightbackground='black') 
    cubos.place(x=295, y=0) 


def AboutWindow(): 
    about=Toplevel() 
    about.minsize(137,94) 
    about.maxsize(137,94) 
    about.title('About Polyominos') 
    frame1 = Frame(about,bg ="White") 
    frame1.grid() 
    lab0 = Label(frame1, text="David Salazar Quintana",bg ="White").grid(column=0,row=0) 
    lab1 = Label(frame1, text="ITCR",bg ="White",).grid(column=0,row=1) 
    lab2 = Label(frame1, text="Ingeneria en computadores",bg ="White").grid(column=0,row=2) 
    lab3 = Label(frame1, text="Profesor: Milton Villegas",bg ="White").grid(column=0,row=3) 
    lab4 = Label(frame1, text="Version: 1.0 (Abril 2012)",bg ="White").grid(column=0,row=4) 





Botones_Principales=MainWindow(root)  
mainloop() 
root.destroy() 

に取り組んでいるコードは、あなたはまだかかわらず、何が起こっているかを取得する必要)。

答えて

0

このコードは、ポップアップテキストダイアログボックスを実装する方法を理解するのに役立ちます。この例の方法は、メインウィンドウ(ルート)にボタンを実装することで、クリックするとMyDialogクラスオブジェクトが表示され、ポップアップダイアログが作成され、wait_window()を使用して終了するまで待機します。ポップアップダイアログボックスがどのように実装されているかは、単純なTopLevelウィジェットであり、考えられる別のフレームと同じように、ラベルをパックします。Entryフィールド、最後にボタンmySubmitButtonです。

sendの機能を調べると、Entryの単純な.get()メソッドを使用してエントリを取得するだけです。そして、あなたはdestory()ウィンドウを開き、メインウィンドウを再開します。あなたはあなたが好きなだけ多くの時間を行うことができます。サンプル出力で

import tkinter as tk 

class MyDialog: 
    def __init__(self, parent): 
     top = self.top = tk.Toplevel(parent) 
     self.myLabel = tk.Label(top, text='Enter your username below') 
     self.myLabel.pack() 

     self.myEntryBox = tk.Entry(top) 
     self.myEntryBox.pack() 
     self.mySubmitButton = tk.Button(top, text='Submit', command=self.send) 
     self.mySubmitButton.pack() 

    def send(self): 
     global username 
     username = self.myEntryBox.get() 
     self.top.destroy() 

def onClick(): 
    inputDialog = MyDialog(root) 
    root.wait_window(inputDialog.top) 
    print('Username: ', username) 

username = 'Empty' 
root = tk.Tk() 
mainLabel = tk.Label(root, text='Example for pop up input box') 
mainLabel.pack() 

mainButton = tk.Button(root, text='Click me', command=onClick) 
mainButton.pack() 

root.mainloop() 

enter image description here

私はそれを2回行いました。 GeorgeSam(私の友人)をユーザー名として入力し、新しいダイアログボックスを開くたびにユーザー名が更新されます。 出力:

>>> ================================ RESTART ================================ 
>>> 
Username: George 
Username: Sam 

編集:送信ボタンは、バギーのようですか?時には現れたくない場合もあります。クリック可能ですが、クリックするまで表示されません。それはMac OSの場合にのみ問題があるようです。

使用リファレンス:effbotstackoverflowtutorialspointdaniweb

関連する問題