放大/缩小时如何在画布屏幕上缩放原始乌龟?

时间:2018-08-13 22:22:27

标签: python-3.x tkinter turtle-graphics

我一直在尝试缩放原始乌龟时放大/缩小,以使线条和文本在缩放时应放大,而在缩小时应减小。

我能够在tkinter上执行相同的执行,这是我能够检查的代码。

from tkinter import *

FONT_NAME = "Helvetica"
font_size = 50
Width= 100
root = Tk()

Label(root).pack()
canvas = Canvas(root, width=800, height=500)
canvas.pack(fill=BOTH, expand=1)

widget = Button(None, text='zoom in')

line= canvas.create_line(100,190,1000,190, fill= 'grey')
text= canvas.create_text(130,190, font= (FONT_NAME,font_size), text= 'hi')
def zoomin(event):
global font_size
global Width
d = event.delta
if d < 0:
   amt=0.9
else:
   amt=1.1

canvas.scale(ALL, 200,200, amt, amt)
font_size *= amt
Width *= amt
canvas.itemconfigure(text, font= (FONT_NAME, int(font_size)))
canvas.itemconfigure(line, width= float(Width))

widget.bind('<Button-1>', zoomin)
widget.pack()

我试图在以下代码中完全相同。

import turtle
import tkinter as tk

from turtle import RawTurtle, TurtleScreen, ScrolledCanvas
from tkinter import *

Font = ('TimesRoman', 10)
root = tk.Tk()

canvas = ScrolledCanvas(master = root, width = 3700, height = 3500)
canvas.pack(fill = tk.BOTH, expand = tk.YES)

def zoomin(event, d):
    d = event
    if d < 0:
       amt=0.9
    else:
       amt=1.1

    canvas.scale(tk.ALL, 200,200, amt, amt)
    canvas.bind('<MouseWheel>', zoomin)

def zoomout(d, event):
    d = event
    if d >0:
       amt=1.1
    else:
       amt=0.7
    canvas.scale(tk.ALL, 200,200 , amt, amt)
    canvas.bind('<MouseWheel>', zoomout)
screen = turtle.TurtleScreen(canvas)
screen.screensize(2700, 2500)

screen.onclick(zoomin, btn=1)
screen.onclick(zoomout, btn=2)

t = turtle.RawTurtle(screen)

t.hideturtle()
screen.tracer(0)

t.pu()
t.left(90)
t.forward(70)
t.rt(90)
t.pd()
t.width(8)
t.color("LightGray")
t.forward(1200)
t.back(1200)
t.pu()
t.left(90)
t.forward(25)
t.rt(90)
t.pd()
t.forward(1200)
t.back(1200)

t.pu()
t.setposition(-85, 45)
t.pd()
t.forward(80)
t.left(90)
t.forward(80)
t.left(90)
t.forward(80)
t.left(90)
t.forward(80)
t.left(90)

t.penup()                
t.goto(-295, 70)       
t.write("SALES", True, align="center", font=('TimesNewRoman', 20, 'normal'))
t.pendown()              
t.penup()
t.goto(-45, 50)
t.write("S", True, align="center", font=('TimesNewRoman', 50, 'normal'))
t.pendown()
screen.update()

我将不胜感激任何建议或帮助。

谢谢。

0 个答案:

没有答案