如何在python中防止两个画布之间出现间隙

2024-10-03 21:24:53 发布

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

此代码在一个窗口中生成两个画布。但是Python不会将它们彼此粘在一起,而是在它们之间设置了一个间隙。当我调整窗口大小时,这个差距会变得更大。在

from Tkinter import *

class App:
    def __init__(self,master):

       master.title('Python Canvas Testing')
       master.minsize(width=550, height=450)

       settingscanvas = Canvas(master,bg="yellow")
       settingscanvas.pack(side='top',anchor='nw',expand=True,fill='x')

       datacanvas = Canvas(master,bd=1,bg="green")
       datacanvas.pack(side='top',anchor='nw',expand=True,fill='both')

       for r in xrange(15):
          Label(settingscanvas, text='Label'+str(r+1)).grid()

       Label(datacanvas, text='Label 2').grid()

## create main program window
window = Tk()

## create window container
app = App(window)

mainloop()

有没有我错过的选择,把两幅画布粘在一起,这样就没有空隙了?在


Tags: masterapptop画布windowsidelabelpack
2条回答

我不知道如何让它和背包一起工作。但是你可以用网格管理器来做。要使用网格扩展小部件,您需要设置两件事。首先,“sticky”参数允许widget填充网格中单元格内的空间(“ew”水平填充,“nsew”填充两个方向)。其次,列和/或行的weight参数使其在为正时可消耗。

from tkinter import *

class App:
    def __init__(self,master):
       master.title('Python Canvas Testing')
       master.minsize(width=550, height=450)

       settingscanvas = Canvas(master,bg="yellow")
       settingscanvas.grid(sticky='ew')

       datacanvas = Canvas(master,bd=1,bg="green")
       datacanvas.grid(sticky='nsew')

       master.grid_rowconfigure(1,weight=1)
       master.grid_columnconfigure(0, weight=1)

       for r in range(15):
          Label(settingscanvas, text='Label'+str(r+1)).grid()

       Label(datacanvas, text='Label 2').grid()

## create main program window
window = Tk()

## create window container
app = App(window)

mainloop()

两个小部件都将expand设置为True,因此它们各自被分配了一些额外的空间。如果您只想让一个获得额外的空间,请将另一个的expand设置为False。如果您希望它们都有一些额外的空间,请确保设置fill以包括y方向。

相关问题 更多 >