如何在tkinter画布上创建按钮?

我创建了一个框架,然后创建了一个画布。

接下来,我要在画布上添加一个按钮。

但是,当我打包按钮时,我看不到画布!

这是我尝试过的:

from Tkinter import Tk, Canvas, Frame, Button

from Tkinter import BOTH, W, NW, SUNKEN, TOP, X, FLAT, LEFT

class Example(Frame):

def __init__(self, parent):

Frame.__init__(self, parent)

self.parent = parent

self.initUI()

def initUI(self):

self.parent.title("Layout Test")

self.config(bg = '#F0F0F0')

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

#create canvas

canvas1 = Canvas(self, relief = FLAT, background = "#D2D2D2",

width = 180, height = 500)

canvas1.pack(side = TOP, anchor = NW, padx = 10, pady = 10)

#add quit button

button1 = Button(canvas1, text = "Quit", command = self.quit,

anchor = W)

button1.configure(width = 10, activebackground = "#33B5E5",

relief = FLAT)

button1.pack(side = TOP)

def main():

root = Tk()

root.geometry('800x600+10+50')

app = Example(root)

app.mainloop()

if __name__ == '__main__':

main()

回答:

Tkinterpack管理器会尝试将父窗口小部件的大小调整为正确的大小,以包含其子窗口小部件,并且默认情况下不会更大。画布就在其中-

但它与按钮的尺寸完全相同,因此是不可见的。

如果要在画布上放置小部件 而不 导致画布动态调整大小,则需要以下Canvas.create_window()功能:

# ... snip ...

button1 = Button(self, text = "Quit", command = self.quit, anchor = W)

button1.configure(width = 10, activebackground = "#33B5E5", relief = FLAT)

button1_window = canvas1.create_window(10, 10, anchor=NW, window=button1)

这将在(10, 10)相对于画布的左上角创建您的按钮,而无需调整画布本身的大小。

请注意,您可以将window参数替换为对任何其他Tkinter小部件的引用。需要注意的是:命名的小部件必须是包含画布的顶级窗口的子级,或者是位于同一顶级窗口中的某些小部件的子级。

以上是 如何在tkinter画布上创建按钮? 的全部内容, 来源链接: utcz.com/qa/423465.html

回到顶部