画布内的 Python Tkinter 画布

用户3474688

文档建议我应该能够在 Canvas 内定位一个 Frame 对象,并且该 Frame 对象本身可以包含一个 Canvas。我想知道为什么下面的玩具代码不起作用。我在任何地方都看不到字符串“hello”,只有蓝色的“outercanvas”。我究竟做错了什么?

from tkinter import *
class MainWindow(Frame):
def __init__(self):
    super().__init__()
    self.pack(fill=Y, side = LEFT)
    inframe = Frame(self)
    innercanvas = Canvas(inframe, width=20, height=20)
    innercanvas.create_text(10, 10, anchor=NW, text="Hello")

    outercanvas = Canvas(self, width=100, height=100, bg='#00ffff')
    outercanvas.create_window(0, 0, anchor=NW, window=inframe)
    outercanvas.pack(side=LEFT)

root = MainWindow()
root.mainloop()
杰森哈珀

您没有看到的主要原因innercanvas是您从未调用过.pack()(或其他几何管理器),因此包含inframe不知道显示它。

修复它实际上并没有使代码工作,我发现这相当令人惊讶 - 显然,因为您在inframe之前创建outercanvas,作为同一 Frame 的孩子,inframe仍然在画布下方分层,因此不可见。(这是在 Python 2.7 中使用的,也许它已在您使用的版本中修复。)将创建outercanvas向上移动几行可以解决此问题;您可能希望创建inframe一个子项outercanvas而不是兄弟项,以更好地反映小部件的层次结构。

请注意,inframe实际上根本不需要 - 您可以使用create_window()直接添加innercanvasoutercanvas.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python Tkinter刷新画布

来自分类Dev

Python:如何在画布内添加文本?

来自分类Dev

在Tkinter画布内创建LabelFrame

来自分类Dev

Python Tkinter,画布不显示

来自分类Dev

Tkinter画布内的matplotlib缩放功能

来自分类Dev

Python Tkinter画布形状在画布网格化时不会显示,但在打包时会显示吗?

来自分类Dev

在Tkinter Python中创建全局画布

来自分类Dev

保存Tkinter画布对象

来自分类Dev

如何在画布Python Tkinter中将图像居中

来自分类Dev

如何在python-Tkinter的画布文本上放置轮廓

来自分类Dev

清理Tkinter画布的问题

来自分类Dev

Python 3.8 / Tkinter:画布中的项目无法从循环内绑定到函数

来自分类Dev

在python tkinter中恢复画布上已删除的图片

来自分类Dev

如何使Tkinter画布更新?

来自分类Dev

Python Tkinter画布几何

来自分类Dev

Tkinter画布图像错误

来自分类Dev

Python Tkinter刷新画布

来自分类Dev

Python; tkinter; 画布对象和事件

来自分类Dev

Python Tkinter画布形状在画布网格化时不会显示,但在打包时会显示吗?

来自分类Dev

Python Tkinter画布运行缓慢

来自分类Dev

保存Tkinter画布对象

来自分类Dev

python tkinter按钮在画布网格中绑定并将滚动条添加到画布

来自分类Dev

tkinter固定画布大小

来自分类Dev

Python + Tkinter:基于某些%值在画布中重绘矩形

来自分类Dev

在python Tkinter画布上覆盖整个画布的绘图矩形在顶部和左侧均未显示边框

来自分类Dev

Tkinter:使画布可拖动

来自分类Dev

Tkinter 画布绘制windrose

来自分类Dev

Python tkinter 在画布上创建对象

来自分类Dev

如何关闭 tkinter 画布?