我是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()
有什么建议吗?感谢
答案 0 :(得分:1)
如果您想在中心放置某些内容,则应使用place
而非pack
或grid
:
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()