Как совместить ткинтер и черепаху? - PullRequest
0 голосов
/ 18 января 2019

У меня есть часть таких кодов

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 (остальное я не закончил, только доска). Есть ли способ, который я могу сделать, чтобы объединить черепаху и ткинтер? Спасибо

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Я играл с вашим кодом, пока cdlane отвечал на ваш вопрос! Как сказал cdlane, я заменил «черепаху» на «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()
0 голосов
/ 18 января 2019

Да. Python turtle работает в двух режимах: автономно и , встроенные в большую программу tkinter. Вместо Turtle и Screen при использовании встроенной черепахи вы работаете с RawTurtle, TurtleScreen и, необязательно, ScrolledCanvas. Вы создаете свой интерфейс tkinter по мере необходимости, используя Canvas для хранения графики черепахи. Вы можете найти примеры встраивания черепах в tkinter, выполнив поиск SO для RawTurtle.

Вот пример того же кода, написанного как внедренный и автономный .

...