ткинтер заготовки низа холста - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь поместить объекты на холст под tkinter [8.6] с помощью python 3. Все, что больше 256 пикселей ниже верхнего левого угла, пусто. Не могу понять, почему. Вот урезанный код, показывающий, что я имею в виду:

Python 3.7

from tkinter import *

class Test(Frame):

    def __init__(self, root):
        super().__init__()

        self.master.title("Canvas Test")
        self.pack(fill=BOTH)
        canvas = Canvas(self)
        canvas.pack(fill=BOTH)
        CornerLeft = 230
        CornerUpper = 30
        Fullythere = 256
        ChoppedBottom = 257
        canvas.create_rectangle(CornerUpper, CornerLeft, 400, ChoppedBottom)

def main():

    root = Tk()
    ex = Test(root)
    root.geometry("600x900")
    root.mainloop()

if __name__ == '__main__':
    main()

1 Ответ

1 голос
/ 29 сентября 2019

Если вы установите цвет фона для root (т.е. green) и Test кадра (т.е.. red)

class Test(Frame):

    def __init__(self, root):
        super().__init__()
        self['bg'] = 'red'

def main():

    root = Tk()
    root['bg'] = 'green'

, то вы увидите, что он не используетполное окно

enter image description here

Если вы установите expand=True для Test frame

self.pack(fill=BOTH, expand=True)

, то вы увидите, что Test использует полное окно, но Canvas по-прежнему не использует полное окно

enter image description here

Если вы также используете expand=True для Canvas

canvas.pack(fill=BOTH, expand=True)

тогда вы увидите, что он использует полное окно, и вы можете увидеть ничьи ниже 256

enter image description here


Полный код:

import tkinter as tk

class Test(tk.Frame):

    def __init__(self, root):
        super().__init__()
        #self['bg'] = 'red'

        self.master.title("Canvas Test")
        self.pack(fill='both', expand=True)

        canvas = tk.Canvas(self)
        canvas.pack(fill='both', expand=True)

        corner_left = 30
        corner_upper = 230
        corner_right = corner_left + 400
        corner_bottom = corner_upper + 500
        canvas.create_rectangle(corner_left, corner_upper, corner_right, corner_bottom)

def main():

    root = tk.Tk()
    #root['bg'] = 'green'

    ex = Test(root)
    root.geometry("600x900")
    root.mainloop()

if __name__ == '__main__':
    main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...