如何结合tkinter和turtle?

问题描述 投票:0回答:3

我有一部分这样的代码

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()

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

python tkinter turtle-graphics
3个回答
2
投票

是的。 Python Turtle 在较大的 tkinter 程序中以两种模式运行:“独立”和“嵌入”。使用嵌入海龟时,您可以使用 TurtleScreen 和可选的

RawTurtle
,而不是
TurtleScreen
ScrolledCanvas
。您可以根据需要构建 tkinter 界面,使用 Canvas 来包含海龟图形。您可以通过在 SO 中搜索
RawTurtle
来找到在 tkinter 中嵌入海龟的示例。

这是使用
嵌入式

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


1
投票

好的,我明白了,但是如果我创建了一个库(像这样)怎么办:

0
投票

Toit 类(乌龟):

def __init__(self,x,y,deg): super().__init__() self.hideturtle() self.speed(0) self.x = x self.y = y self.deg = deg def draw_toit(self, model=int,ind=float): self.pu() self.goto(self.x,self.y) self.setheading(self.deg) if model is None: mod = randint(1, 3) else: mod = model self.pendown() if mod == 2: self.pensize(2) self.fillcolor('#000000') self.begin_fill() self.left(25) for i in range(2): self.forward(78*ind) self.right(50) self.end_fill() elif mod == 3: self.pensize(2) self.fillcolor('#000000') self.begin_fill() for i in range(2): self.forward(160*ind) self.circle(2*ind, 180) self.end_fill() elif mod == 1: self.pensize(2) self.fillcolor('#000000') self.begin_fill() for i in range(2): self.forward(140*ind) self.circle(2*ind, 180) self.end_fill() self.penup() self.goto(self.x,self.y) self.setheading(self.deg)

`

我想在一个单独的程序中将这个“toit”绘制到 tkinter 窗口中。这怎么可能?

© www.soinside.com 2019 - 2024. All rights reserved.