特金特在画布底部留白

2024-07-04 04:59:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python3将对象放在tkinter[8.6]下的画布中。左上角下超过256像素的所有对象都是空白的。不知道为什么。下面是一个精简的代码,显示了我的意思:

Python3.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()

Tags: 对象testselfinitmaintkinterdefroot
1条回答
网友
1楼 · 发布于 2024-07-04 04:59:39

如果为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

如果为Test帧设置expand=True

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()

相关问题 更多 >

    热门问题