有什么办法可以从Tkinter GUI调用Turtle Screen吗?

时间:2019-05-04 13:52:21

标签: python user-interface turtle-graphics

我想为自己创建的游戏创建GUI。将类名称分配给tkinter中的按钮时遇到问题。脚本运行后,游戏运行,而gui不运行。我也注意到,仅导入游戏类就足以使它发生是足够的。感谢任何建议。

最简单的gui

 from agario import game
        class menu():
            def __init__(self):
                tk.Tk.__init__(self)
                tk.Tk.geometry(self, '450x400')
                tk.Button(self, text='start', width=20, command=game()).pack()


        test = menu()
        test.mainloop()

游戏类

    class game():
        s = 0.4                                 #### agario speed
        wn = t.Screen()
        wn.title("agario game")
        wn.setup(width=600, height=500)
        wn.tracer(0)
        wn.bgcolor("black")



        while True:

            wn.update()
            move(a.agario_object, wn, s).movement() ### movement part
            killing(k.killing_object, a.agario_object,k.killing_ball).agario_border_check(), killing(k.killing_object, a.agario_object,k.killing_ball).killing_ball_check() ## kiling balls part
            cko(a.agario_object,f.food_object, f.food).food_con(), cko(a.agario_object,f.food_object, f.food).boost_con(b.boost_object, b.boost) ## contacts part


        wn.mainloop()

1 个答案:

答案 0 :(得分:0)

是的,有一种定义明确的方法可以从tkinter GUI内调用乌龟屏幕。但是您的示例中的代码不足,并且您导入了我没有的库,因此我无法提供完整的自定义示例。

TurtleScreen API适用于独立乌龟。当在较大的tkinter程序中嵌入 时,我们使用RawTurtle,也可以使用TurtleScreen。在tkinter级别,您需要提供一个tkinter.Canvasturtle.ScrolledCanvas实例:

root = tkinter.Tk()

canvas = turtle.ScrolledCanvas(root)
canvas.pack(side=tkinter.LEFT)

如果需要调用基于屏幕的方法,可以将(滚动的)画布包裹在TurtleScreen中:

screen = turtle.TurtleScreen(canvas)
screen.setworldcoordinates(-10, 100, 100, -10)

然后,您可以使用画布,滚动的画布或屏幕创建RawTurtle实例:

turtle = turtle.RawTurtle(screen)
turtle.goto(90, 90)