2012-04-07 4 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() 창을 열고 기본 창을 다시 시작하십시오. 원하는만큼 많은 시간을 할 수 있습니다.

내가 두 번을했던 샘플 출력에서 ​​

enter image description here

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() 
. GeorgeSam (내 친구)을 사용자 이름으로 입력하면 새 대화 상자를 열 때마다 사용자 이름이 업데이트됩니다. 출력 :

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

편집 : 제출 버튼은 버그 것 같다? 때로는 나타나기 싫어. 클릭 할 수 있지만 클릭 할 때까지 나타나지 않습니다. 그것은 Mac OS에서만 문제인 것처럼 보입니다.

참조 사용 : effbot, stackoverflow, tutorialspoint, daniweb

관련 문제