如何在Tkinter窗口的指定位置(x=400,y=150)显示文本?
解决Tkinter指定坐标显示文本的问题
问题根源
- Label组件没有
goto()方法,这个方法是Canvas对象的专属方法; - 使用
grid()布局时,组件位置由网格行列规则控制,无法直接通过坐标定位。
方案一:用Canvas直接创建文本(最推荐)
既然卡片图片是在Canvas中加载的,直接利用Canvas的create_text()方法添加文本,既能精准指定坐标,又能让文本和图片处于同一画布层级,逻辑更合理。
修改后的核心代码:
canvas = Canvas(width=800, height=526, bg=BACKGROUND_COLOR, highlightthickness=0) card_front = PhotoImage(file='images/card_front.png') canvas.create_image(400, 263, image=card_front) # 直接在Canvas上创建指定坐标的文本 canvas.create_text(400, 150, text="French", font=("Ariel", 40, "italic"), fill="black") canvas.grid(row=0, column=1, columnspan=2)
注:删除原来的text_1 Label相关代码即可,无需额外组件。
方案二:Label配合place布局(若坚持用Label组件)
将Label的父组件设为Canvas,再用place()布局直接指定坐标,同时设置anchor="center"让文本中心对齐目标坐标:
修改后的核心代码:
canvas = Canvas(width=800, height=526, bg=BACKGROUND_COLOR, highlightthickness=0) card_front = PhotoImage(file='images/card_front.png') canvas.create_image(400, 263, image=card_front) canvas.grid(row=0, column=1, columnspan=2) # 把Label的父组件设为Canvas,用place定位 text_1 = Label(canvas, text="French", bg='white', font=("Ariel", 40, "italic"), fg='black') text_1.place(x=400, y=150, anchor="center")
内容的提问来源于stack exchange,提问作者PolymathCarlos
相关产品推荐
相关产品推荐

