python 您所在的位置:网站首页 python检测图片上的按钮位置 python

python

2024-07-13 10:19| 来源: 网络整理| 查看: 265

我创建了一个框架,然后创建了一个 Canvas 。 接下来我要做的是在 Canvas 上添加一个 Button。 但是,当我打包 Button 时,我看不到 Canvas!

这是我尝试过的:

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

最佳答案

默认情况下,Tkinter pack 管理器尝试将父窗口小部件的大小调整为正确的大小以包含其子窗口小部件,而不是更大。所以 Canvas 就在那里 - 但它与按钮的大小完全相同,因此是不可见的。

如果您想在 Canvas 上放置一个小部件而不导致 Canvas 动态调整大小,您需要 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)

这将在相对于 Canvas 的 (10, 10) 处创建左上角的按钮,而不调整 Canvas 本身的大小。

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

关于python - 如何在 tkinter Canvas 上创建按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11980812/



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有