我试图制作一个刽子手游戏,并允许用户输入一个值来绘制刽子手。虽然它尚未完成,但在将文本字段应用到我的第二个画布上时,我遇到了问题。每当我将文本字段实现到第二个画布上时,文本字段都会显示,但画布会消失,只显示挂起。我希望文本字段显示在第二个画布的顶部。有谁知道为什么或建议?
from tkinter import *
root = Tk()
root.wm_title("HangMan")
canvas = Canvas(root, height=400, width=800)
canvas.pack()
canvas2 = Canvas(root, bg="lightblue",height=400, width=800)
canvas2.pack()
text1 = canvas.create_text(15,15,anchor = "nw")
canvas.itemconfig(text1, text = "Press Up, Down, Left, or Right")
#Creates the pole
a = canvas.create_rectangle(550,50,550,350,fill = "black")
b = canvas.create_rectangle(350,50,550,50,fill = "black")
c = canvas.create_rectangle(350,50,350,90,fill = "black")
e = Entry(canvas2)
e.pack()
e.delete(0,END)
e.insert(0, "enter a integer")
#Creates man
d = canvas.create_oval(325, 90, 375, 140, outline = "black") #head
e = canvas.create_line(350, 140, 350, 230, fill = "black") #neck and torso
f = canvas.create_line(300, 125, 350, 175, fill = "black") #left arm
g = canvas.create_line(400, 125, 350, 175, fill = "black") #right arm
h = canvas.create_line(350, 230, 310, 300, fill = "black") #left leg
i = canvas.create_line(350, 230, 390, 300, fill = "black") #right leg
root.mainloop()
更新:
我现在实现了create_window方法,现在它可以工作了!
e = Entry(canvas2)
canvas2.create_window(100, 100, window = e)
e.delete(0,END)
e.insert(0, "enter a integer")
答案 0 :(得分:1)
当您使用pack
时,默认行为是包含窗口小部件(在本例中为画布)“缩小到适合”。因此,画布正在消失,因为它缩小到足以容纳条目。
通常,如果要向画布添加条目小部件,则需要使用画布的create_window
方法。您可以关闭“缩小到适合”功能(使用名为overrideredirect
的方法),但它很少是正确的解决方案。如果不了解您尝试使用两个画布创建的效果,则很难推荐正确的解决方案。