4

我想在用 Tkinter 创建的画布内为整数创建一个用户输入框。我该怎么做呢?

def gamescreen():
    photo = PhotoImage(file="gamescreen.gif")
    canvas.bind("<Button-1>", buttonclick_gamescreen)
    canvas.pack(expand = YES, fill = BOTH)
    canvas.create_image(1, 1, image = photo, anchor = NW)
    e1 = Entry(canvas)
    e2 = Entry(canvas)
    game1 = PhotoImage(file="1.gif")
    canvas.create_image(30, 65, image = game1, anchor = NW)
    canvas.create_window(window = e1, x=10, y=10)
    canvas.create_window(window = e2 , x=400, y=10)    
    canvas.update()
    window.mainloop()

这是我目前拥有的,但画布上的任何地方都没有出现输入框。我知道这可能不是在 python 中创建游戏的最有效方式,但我不熟悉任何其他方式。

谢谢你的帮助。

编辑:我已经用提供的建议更新了代码。我现在有一个问题

IndexError: tuple index out of range

这发生在下面的行

canvas.create_window(window = e1, x=10, y=10)
canvas.create_window(window = e2, x=400, y=10)

编辑:好的,我知道出了什么问题,我不得不删除 x= 和 y= 并且只有自己的坐标。现在出现输入框。

4

4 回答 4

8

您可以使用create_window将小部件放置在画布中。

e1 = Entry(canvas)
canvas.create_window(400,10,window=e1)
于 2013-07-02T11:57:33.290 回答
4

好的,我对元组的实际含义做了更多阅读,并且能够修复错误。

只需删除 x= 和 y= 以便窗口的坐标是自己的。

于 2013-07-05T14:43:46.650 回答
0

取消注释您的 e1 和 e2。您必须使用 .pack() 功能。

e1.pack()
e2.pack()

这应该让它在屏幕上显示,其余的取决于你!

编辑:另外,不应该是 canvas.mainloop() 吗?是窗口定义还是画布?

于 2013-07-02T04:44:23.930 回答
0

您按参数的顺序犯了错误:

它应该是:

textentry = Entry(canvas)
canvas.create_window(600, 50, window=textentry, height=50, width=1000)

其中前两个参数指定周围的点,整个文本框将自行居中。高度和宽度是设置文本框的高度和宽度。

窗口是指定条目。

于 2018-03-17T08:12:03.807 回答