Codifiqué unas tijeras de papel gui rock y usé imágenes en los botones con tkinter.ttk. Puedo abrir el programa cuando lo ejecuto en modo inactivo, pero cuando tengo que hacer doble clic, solo abre cmd por un segundo y no hace nada

He probado tanto from tkinter.ttk import * como from tkinter import ttk. También tengo python instalado en PATH

from tkinter import *
from tkinter.ttk import *
import random


# rock button command
def clickrock():
    Computer.config(text=f"Computer chose: {comp}")
    if comp == "rock":
        Answer.configure(text="You: DRAW")
    elif comp == "paper":
        Answer.configure(text="You: LOSE")
    else:
        Answer.configure(text="You: WIN")
    rockButton.configure(state='disabled')
    paperButton.configure(state='disabled')
    scissorsButton.configure(state='disabled')
    restart.place(x=160, y=150)

# paper button command
def clickpaper():
    Computer.config(text=f"Computer chose: {comp}")
    if comp == "rock":
        Answer.configure(text="You: WIN")
    elif comp == "paper":
        Answer.configure(text="You: DRAW")
    else:
        Answer.configure(text="You: LOSE")
    rockButton.configure(state='disabled')
    paperButton.configure(state='disabled')
    scissorsButton.configure(state='disabled')
    restart.place(x=160, y=150)
 # scissors button command
def click3():
    Computer.config(text=f"Computer chose: {comp}")
    if comp == "rock":
        Answer.configure(text="You: LOSE")
    elif comp == "paper":
        Answer.configure(text="You: WIN")
    else:
        Answer.configure(text="You: DRAW")
    rockButton.configure(state='disabled')
    paperButton.configure(state='disabled')
    scissorsButton.configure(state='disabled')
    restart.place(x=160, y=150)

def click_restart():
    restart.place_forget()
    comp1 = random.randint(1,3)
    Answer.config(text="You: ")
    Computer.config(text="Computer chose: ")
    rockButton.configure(state='normal')
    paperButton.configure(state='normal')
    scissorsButton.configure(state='normal')

#creates window
window = Tk()
window.title("rock paper scissors")
window.geometry("400x300")



# labels to give instructions
Label(window, text="rock paper scissors game").pack()
Label(window, text="pick a button").pack()

Computer = Label(window, text="Computer chose: ")
Computer.place(x=160, y=180)

#images
rock_photo = PhotoImage(file = "rock.png")
paper_photo = PhotoImage(file = "paper.png")
scissors_photo = PhotoImage(file = "scissors.png")

#buttons
rockButton = Button(window, image =rock_photo, command=clickrock)

paperButton = Button(window, image=paper_photo, command=clickpaper)

scissorsButton = Button(window, image = scissors_photo, command=click3)

restart = Button(window, text="RESTART", command=click_restart)

# pack buttons
rockButton.place(x=80, y=50)
paperButton.place(x=160, y=50)
scissorsButton.place(x=240, y=50)

# picking computer choice
comp1 = random.randint(1,3)

# naming comp choice
if comp1  == 1:
    comp = "rock"
elif comp1 == 2:
    comp = "paper"
elif comp1 == 3:
    comp = "scissors"

# labels
Answer = Label(window, text="You: ")
Answer.place(x=160, y=200)





Debería poder abrir el programa sin inactivo, se puede abrir otro código sin inactivo pero esto no puede

1
Silas Hayes-Williams 5 oct. 2019 a las 16:10

3 respuestas

La mejor respuesta

Acabo de notar que a su código le falta una línea que hace que la GUI aparezca y se ejecute. Para poder ejecutar la aplicación / llamar al script a través de cmd, agregue

window.mainloop()

Al final. Eso debería ayudarte a comenzar. Más información ver p. Ej. aquí.

Según tengo entendido, IDLE está construido con tkinter, por lo que ya se ejecuta mainloop(). Por lo tanto, no necesita llamar eso en su secuencia de comandos mientras lo ejecuta desde IDLE. Sin embargo, debería llamarlo ;-) - más información, p. aquí.

0
MrFuppes 8 oct. 2019 a las 07:01

Puede copiar todo su código y pegarlo en un bloc de notas. Recuerde seleccionar "Todos los archivos" en lugar de "archivo de texto .txt". Además, guarde su archivo con una extensión '.py'. Después de guardarlo, puede ver un archivo '.py' en la pantalla de su escritorio. Simplemente ábralo con Python Launcher o Python normal y podrá ejecutarlo sin su ide. solo asegúrese de que después de mostrar la salida, desaparecerá inmediatamente. Para eso, puedes usar al final:

input("")
0
bbbrrruuuhhh 5 oct. 2019 a las 14:08

Tal vez tenga 2 versiones de python instaladas en su computadora y, de forma predeterminada, es la otra versión la que inicia su archivo de python cuando intenta ejecutarlo.

¿Nos puede dar más información? Como el código por ejemplo

0
Mathix420 5 oct. 2019 a las 14:14
58248615