Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
全屏my Python turtle画布,无需修改大小_Python_Turtle Graphics - Fatal编程技术网

全屏my Python turtle画布,无需修改大小

全屏my Python turtle画布,无需修改大小,python,turtle-graphics,Python,Turtle Graphics,我这里有一个代码,它将海龟画布设置为640x480。我希望它是在全屏不改变其宽度和高度。这可能吗?像特金特州的变焦?这是我的密码 import turtle import tkinter as tk ui = tk.Tk() ui.state('zoomed') #zoom the tkinter canvas = tk.Canvas(master = ui, width = 640, height = 480) #set canvas size in tkinter canvas.pack(

我这里有一个代码,它将海龟画布设置为640x480。我希望它是在全屏不改变其宽度和高度。这可能吗?像特金特州的变焦?这是我的密码

import turtle
import tkinter as tk

ui = tk.Tk()
ui.state('zoomed') #zoom the tkinter
canvas = tk.Canvas(master = ui, width = 640, height = 480) #set canvas size in tkinter
canvas.pack()
t = turtle.RawTurtle(canvas)

您可以使用
setworldcoordinates()
设置虚拟坐标,以保持640 x 480的分辨率,而不考虑实际窗口大小:

import tkinter as tk
from turtle import RawTurtle, TurtleScreen, ScrolledCanvas

width, height = 640, 480

root = tk.Tk()

# We're not scrolling but ScrolledCanvas has useful features
canvas = ScrolledCanvas(root)
canvas.pack(fill=tk.BOTH, expand=tk.YES)

screen = TurtleScreen(canvas)
root.state('zoomed')  # when you call this matters, be careful
screen.setworldcoordinates(-width / 2, -height / 2, width / 2 - 1, height / 2 - 1)

turtle = RawTurtle(screen)

turtle.penup()
turtle.sety(-230)
turtle.pendown()

turtle.circle(230)  # circle that nearly fills our virtual screen

screen.mainloop()
然而,当您将一个形状矩形映射到另一个形状矩形时,您的圆可能看起来像一个椭圆形,并且丢失了原始的纵横比。如果您愿意增加一个维度以保持纵横比,则使用以下计算来扩充上述代码:

# ...
root.state('zoomed')  # when you call this matters, be careful

window_width, window_height = screen.window_width(), screen.window_height()

if window_width / width < window_height / height:
    height = window_height / (window_width / width)
else:
    width = window_width / (window_height / height)

screen.setworldcoordinates(-width / 2, -height / 2, width / 2 - 1, height / 2 - 1)
# ...
#。。。
root.state('zoomed')#当您调用此项时,请小心
窗口宽度,窗口高度=screen.window\u width(),screen.window\u height()
如果窗宽/宽度<窗高/高度:
高度=窗高/(窗宽/宽度)
其他:
宽度=窗宽/(窗高/高度)
屏幕设置世界坐标(-width/2,-height/2,width/2-1,height/2-1)
# ...

您的圆圈应该是圆形的。

非常感谢您,先生。这对我帮助很大。上帝保佑你!如果你觉得@ CDLAN答案帮助了你,你可以考虑,