Thêm đồ họa vào canvas



  • Chào các bạn, mình có 2 đoạn code như thế này

     import tkinter
     import tkinter.messagebox
     import turtle
     import numpy as np
     from turtle import*
     turtle.tracer(0,0)
     wn = turtle.Screen()
     wn.bgcolor("light blue")
     wn.title("Turtle")
     skk = turtle.Turtle()
     skk.hideturtle()
    skk.speed(800)
    skk.pensize(3)
    
    def Board2():
    
       for i in range(13):
            skk.penup()
            skk.goto(-650,-300+i*50)
            skk.pendown()
            skk.forward(1200)
            skk.penup()
       for i in range(25):
            skk.penup()
            skk.goto(-650+i*50,-300)
            skk.pendown()
            skk.left(90)
            skk.forward(600)
            skk.right(90)
            skk.penup()
    d=0
    val=np.zeros((25,13))
    def click(x,y):
        print("trc lam tron")
        print(x,y)
        if((x<-675 or x>575) or (y<-325 or y>325)):
            tkinter.messagebox.showinfo("You fool!!","Wrong position motherfucker!!!")
       else:
            if (x%100<=75 and x%100>=25):
                x=x-x%100+50
           else:
                if(x%100<=25 and x%100>=0):
                    x=x-x%100
                else: x=x+100-x%100
    
          if (y%100<=75 and y%100>=25):
                 y=y-y%100+50
         else:
                 if(y%100<=25 and y%100>=0):
                     y=y-y%100
                else: y=y+100-y%100
    print("sau lam tron")
    print(x,y)
    global val
    a=(x+650)//50
    b=(y+300)//50
    a=int(a)
    b=int(b)
    if(val[a][b]==1) or (val[a][b]==2.0):
       tkinter.messagebox.showinfo("You fool!!","This shit has already taken motherfucker!!!")
    else:
            global d
            if (d%2==0):
             X(x,y)
             val[a][b]=1
            else:
             O(x,y)
             val[a][b]=2
            d=d+1
     
    
    def X(x,y):
        skk.pensize(8)
        skk.pencolor("blue")
        skk.penup()
        skk.goto(x-12.5,y-12.5)
        skk.pendown()
        skk.goto(x+12.5,y+12.5)
        skk.penup()
        skk.goto(x-12.5,y+12.5)
        skk.pendown()
        skk.goto(x+12.5,y-12.5)
        skk.penup()
    def O(x,y):
       skk.pensize(8)
       skk.pencolor("red")
       skk.penup()
       skk.goto(x,y-12.5)
       skk.pendown()
       skk.circle(12.5,360)
       skk.penup()
    
    turtle.update()
    turtle.done()
    

    Và như thế này:

    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) 
    
    draw = turtle.RawTurtle(canvas)
    
    def Board(a, x, y, size):
       def Button_click ():
             tkinter.messagebox.showinfo("Game", "Tic Tac Toe")
     
        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 = Board)
      Board_Button.config(bg="cyan",fg="black")
      Board_Button.grid(padx=2, pady=2, row=1, column=11, sticky='nsew')
     window.mainloop()
    

    Mình định viết 1 hàm Board() có thể chứa cả đoạn code đầu tiên và sau đó gọi hàm ở lệnh Board_Button. Nhưng khi mình viết hàm và compile thì cả 2 cửa sổ của tkinter và turtle hiện ra cùng lúc. Mình đã sai chỗ nào vậy các bạn?


Log in to reply
 

Looks like your connection to Cộng đồng Python Việt Nam was lost, please wait while we try to reconnect.