【问题标题】:How to combine tkinter and turtle?如何结合 tkinter 和海龟?
【发布时间】:2019-06-12 07:10:55
【问题描述】:

我有一部分这样的代码

import turtle
turtle.bgcolor("green")
draw = turtle.Turtle()
draw.speed(1000000)
draw.hideturtle()
draw.pensize(3)
draw.color("white")

def Board (a, x, y, size):
    draw.pu()
    draw.goto(x, y)
    draw.pd()
    for i in range (0, 4):
        draw.forward(size)
        draw.right(90)

x =-40
y = -40
size = 40
for i in range (0, 10):
    for j in range (0, 10):
         Board (draw, x + j*size, y + i*size, size)

turtle.done()

像这样

import tkinter
import tkinter.messagebox
window = tkinter.Tk()
def Button_click ():
   tkinter.messagebox.showinfo("Game", "Tic Tac Toe")

button = tkinter.Button(window, text = "Play!", command = Button_click)
button.pack()
window.mainloop()

因为我正在尝试创建一个带有按钮的窗口来进入井字游戏(我还没有完成其余的,只完成了棋盘)。有什么办法可以将turtle和tkinter结合起来吗? 谢谢

【问题讨论】:

    标签: python tkinter turtle-graphics


    【解决方案1】:

    是的。 Python turtle 以两种模式运行,standaloneembedded 在更大的 tkinter 程序中。而不是TurtleScreen,当使用turtle 嵌入时,您可以使用RawTurtleTurtleScreen 和可选的ScrolledCanvas。您可以根据需要构建您的 tkinter 界面,使用 Canvas 来包含您的海龟图形。您可以通过搜索 SO for RawTurtle 找到在 tkinter 中嵌入 turtle 的示例。

    Here's an example of the same code written both embedded and standalone.

    【讨论】:

      【解决方案2】:

      当 cdlane 回答你的问题时,我正在玩你的代码!正如 cdlane 所说,我将“turtle”替换为“RawTurtle”,并将您的按钮放在与画布相同的窗口上。放置东西时我更喜欢使用网格而不是包装,因为我觉得我有更多的控制权。

      import tkinter
      import turtle
      import tkinter.messagebox
      
      window = tkinter.Tk()
      
      canvas = tkinter.Canvas(master = window, width = 800, height = 800)
      canvas.grid(padx=2, pady=2, row=0, column=0, rowspan=10, columnspan=10) # , sticky='nsew')
      #draw = turtle.Turtle()
      draw = turtle.RawTurtle(canvas)
      
      def Board(a, x, y, size):
          #draw.pu()
          draw.penup()
          draw.goto(x,y)
          #draw.pd()
          draw.pendown()
          for i in range (0, 4):
              draw.forward(size)
              draw.right(90)
      
      def Board2():
          x =-40
          y = -40
          size = 40
          for i in range (0, 10):
              for j in range (0, 10):
                  Board(draw, x + j*size, y + i*size, size)
      
      def Button_click ():
          tkinter.messagebox.showinfo("Game", "Tic Tac Toe")
      
      #button = tkinter.Button(window, text = "Play!", command = Button_click)
      #button = Tk.Button(window, text = "Play!", command = Button_click)
      #button.pack()
      #
      Play_Button = tkinter.Button(master = window, text ="Play!", command = Button_click)
      Play_Button.config(bg="cyan",fg="black")
      Play_Button.grid(padx=2, pady=2, row=0, column=11, sticky='nsew')
      
      Board_Button = tkinter.Button(master = window, text ="Draw_Board", command = Board2)
      Board_Button.config(bg="cyan",fg="black")
      Board_Button.grid(padx=2, pady=2, row=1, column=11, sticky='nsew')
      #
      window.mainloop()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多