在tkinter上定位文本框

时间:2014-02-12 20:53:04

标签: python tkinter

我是tkinter的新手,在我习惯之前会有一段时间。目前我正试图移动一个文本框,只是为了看它是如何工作的,但我无法让它从中心移动。尝试使用网格,它根本没有移动。尝试使用垫x&它确实移动但在某些地方消失了。我的目标是制作一个简单的登录屏幕。

这就是我得到的:

from tkinter import *

import tkinter.messagebox

    #def logVali():


form = Tk()

form.title("Log in screen")

form.geometry("700x200+300+200")

txtVar = StringVar(None)

usrIn = Entry(form, textvariable = txtVar, width = 50)

usrIn.grid(row = 30, column = 40)

usrIn.pack()

form.mainloop()

有什么建议吗?感谢

2 个答案:

答案 0 :(得分:1)

如果您想在中心放置某些内容,则应使用place而非packgrid

from Tkinter import *

form = Tk()
form.title("Log in screen")
form.geometry("700x200+300+200")


label = Label(form, text='User:')
label.place(relx=0.5, rely=0.5, anchor='s')

txtVar = StringVar(None)
usrIn = Entry(form, textvariable = txtVar, width = 50)
usrIn.place(relx=0.5, rely=0.5, anchor='n')

form.mainloop() 

答案 1 :(得分:1)

你的盒子可能不会像你使用.grid .pack

一样移动

根据您的需要,您可以使用.grid,.pack或.place函数。你已经看过网格了。打包工作就像这样:

.place(x=10,y=30) #replace values with required

这绝对适用于定位,但是当您调整窗口大小时,它会失效。如果用户将窗口拖得更大;盒子将保持在您设置的位置。换句话说,坐标不是相对于窗口的大小。

你已经使用过.pack,但是你使用它很奇怪所以我会解释。

.pack() 

这会将框放在中间位置,而下一个使用.pack()的项目会将它放在最后一个下面。这对于确保没有任何重叠非常有用,但它并不总是实用和/或美观。

最后一句警告;所有这三个函数都返回None。这意味着您打算以任何方式编辑框:单独调用函数。

#Some tutorials will say....
Button1 = Button(text="foo",command=bar).pack()

#However you should do this...
Button1 = Button(text="foo,command=bar)
Button1.pack()