import turtle as t
import random
from tkinter import *
from tkinter import messagebox
import os
root = Tk()
root.title("choice")
root.geometry("300x170")
root.resizable(0,0)
window = Tk()
window.title("result")
window.geometry("300x170")
window.resizable(0,0)
def quit():
global root
root.exit()
t.speed(10)
t.penup()
t.goto(-300,250)
for step in range(10):
t.write(step,align='center')
t.right(90)
t.forward(10)
t.pendown()
for line in range(8):
t.forward(30)
t.penup()
t.forward(30)
t.pendown()
t.penup()
t.backward(490)
t.penup()
t.left(90)
t.forward(20)
tu1=t.Turtle()
tu1.color('red')
tu1.shape('turtle')
tu1.penup()
tu1.goto(-300,190)
tu1.pendown()
tu2=t.Turtle()
tu2.color('blue')
tu2.shape('turtle')
tu2.penup()
tu2.goto(-300,130)
tu2.pendown()
tu3=t.Turtle()
tu3.color('green')
tu3.shape('turtle')
tu3.penup()
tu3.goto(-300,70)
tu3.pendown()
def your_choice():
yn = 'not selected'
if Radiovar.get() == 1:
yn = "no.1 is selected"
elif Radiovar.get() == 2:
yn = "no.2 is selected"
elif Radiovar.get() == 3:
yn = "no.3 is selected"
lbl2.configure(text="your choice: "+yn)
messagebox.showinfo("your choice",yn)
lbl = Label(root, text="""Which turtle do you think will win?""", font="NanumGothic 10")
lbl.pack()
yn = StringVar()
Radiovar = IntVar()
Radio_button1 = Radiobutton(text="no.1",variable=Radiovar,value=1)
Radio_button2 = Radiobutton(text="no.2",variable=Radiovar,value=2)
Radio_button3 = Radiobutton(text="no.3",variable=Radiovar,value=3)
btn = Button(root, text="choice",command=your_choice,width=5,height=1)
lbl2 = Label(root,text="your choice : ")
Radio_button1.pack()
Radio_button2.pack()
Radio_button3.pack()
btn.pack()
lbl2.pack()
root.mainloop()
root.quit()
for go in range(70):
sp1=tu1.forward(random.randint(1,8))
sp2=tu2.forward(random.randint(1,8))
sp3=tu3.forward(random.randint(1,8))
corLab1 = Label(window, text="Correct");
faiLab1 = Label(window, text="fail");
if Radiovar==1:
if sp1>sp2 and sp1>sp3 :
corLab1.pack();
else:
faiLab1.pack();
elif Radiovar==2:
if sp2>sp1 and sp2>sp3 :
corLab1.pack();
else:
faiLab1.pack();
else:
if sp3>sp1 and sp3>sp2 :
corLab1.pack();
else:
faiLab1.pack();
答案 0 :(得分:0)
您的程序是“魔术思维”的结果,不可能起作用。例如:您应该使用独立乌龟,而应该使用嵌入式乌龟;您调用root.mainloop()
将控制权移到初始化代码中间的Tk事件循环中; import os
在这里没有业务;您创建两个Tk根!您在用户有机会挑选乌龟之前进行了比赛;即使您的足迹更多,您仍已在各地硬编码了三只海龟。
下面是我对代码的完整修改,基本上可以运行它:
from turtle import RawTurtle, TurtleScreen, ScrolledCanvas
from random import randint
from tkinter import *
COLORS = ['red', 'green', 'blue', 'magenta']
def run_race():
selected = COLORS[radio_var.get()]
label.configure(text="Your choice: " + selected)
winner = None
while True:
for racer in racers:
if racer.xcor() >= 300:
winner = racer
break
racer.forward(randint(1, 8))
else: # no break
continue
break
window = Toplevel(root)
window.title('Guess Result')
window.geometry('200x60')
correct = Label(window, text="Correct!")
failure = Label(window, text="Fail!")
if winner.pencolor() == selected:
correct.pack()
else:
failure.pack()
root = Tk()
root.title("Turtle OTB")
root.geometry('700x700')
Label(root, text="Which turtle do you think will win?").pack()
radio_var = IntVar()
for index, color in enumerate(COLORS):
Radiobutton(root, text=color, variable=radio_var, value=index).pack()
Button(root, text="Start Race", command=run_race, width=10, height=1).pack()
label = Label(root, text="Your choice: ")
label.pack()
canvas = ScrolledCanvas(root)
canvas.pack(fill=BOTH, expand=True)
screen = TurtleScreen(canvas)
screen.tracer(False)
t = RawTurtle(screen)
t.penup()
t.goto(-300, 250)
for step in range(0, 11):
t.write(step, align='center')
t.right(90)
t.forward(10)
t.pendown()
for line in range(8):
t.forward(30)
t.penup()
t.forward(30)
t.pendown()
t.penup()
t.backward(490)
t.left(90)
t.forward(60)
racers = []
for gate, color in enumerate(COLORS):
racer = RawTurtle(screen, 'turtle')
racer.speed('fastest')
racer.color(color)
racer.penup()
racer.goto(-300, 195 - gate * 60)
racer.pendown()
racers.append(racer)
screen.tracer(True)
screen.mainloop()
但是,它仍然需要工作。 (例如,无需重新启动程序即可进行新的比赛。)