Холст Python большего размера, чем экран

Я пытаюсь понять, как установить размер моего холста tkinter больше, чем на самом деле мой экран. Мой экран 1920x1280, если я установлю в следующем коде более высокие числа, размер никогда не превысит это (и я хочу сделать это из-за огромного рисунка).

Код:

from tkinter import *


class Draw:

    def __init__(self, min, max):
        self.min = min
        self.max = max

    def draw(self):
        master = Tk()
        w = Canvas(master, width=2500, height=2500)
        #...

Я также пробовал master.geometry("2500x2500"), но это тоже не сработало.


person enneenne    schedule 29.08.2020    source источник


Ответы (2)


Вы не можете сделать окна больше, чем физический экран. Однако, если ваша цель — создать большой рисунок, вы можете сделать это, не увеличивая холст физически. Виджет холста — это просто окно просмотра в гораздо большую виртуальную область рисования.

Например, вы можете создать холст размером всего 400x400 пикселей, но нарисовать изображение размером 4000x4000. Вы можете определить размер виртуального окна, установив для атрибута scrollregion любой размер, который вы хотите (до предела, который, я думаю, может быть около 64000x64000)

person Bryan Oakley    schedule 29.08.2020

Это происходит из-за вашего ограничения экрана, вы не можете запустить окно размером 2500 пикселей * 2500 пикселей на экране 1920 пикселей * 1280 пикселей, если вы попытаетесь запустить окно размером 1920 пикселей * 1280 пикселей на своем экране, это сработает.

Это происходит потому, что ваши ограничения (2500px * 2500px) слишком велики для вашего монитора. Окно пытается сделать 7250000 пикселей на вашем экране 2457600 пикселей!

Таким образом, вам нужно будет получить лучший экран, возможно, экран 3k или 4k, чтобы запустить это.

person Teerth jain    schedule 29.08.2020
comment
Спасибо. Есть ли другой способ заставить это работать? Было бы хорошо, если бы мне пришлось, например, двигать окном, чтобы увидеть все это... - person enneenne; 29.08.2020
comment
Кто-то еще ответил на это, спасибо, не могли бы вы проголосовать за мой ответ - person Teerth jain; 30.08.2020