英文:
How do I position my text field properly in tkinter?
问题
我有一个程序,它生成了第二个窗口,我想让文本字段更靠近 'Name: ',但我不知道如何做。
def editWindow():
item_choice_intvar = tk.IntVar()
course_choice_intvar = tk.IntVar()
editMenu = tk.Toplevel()
editMenu.geometry('400x400')
editMenu.resizable(False,False)
editMenu['bg'] = 'black'
editMenu.title('Configure Menu')
addItem = tk.Label(editMenu,text = "Add Item:",font = ("Garamond",20),bg = 'black')
addItem.grid(column = 0,row = 0, sticky = 'WN', pady = 10, padx = 20)
itemChoice = tk.Radiobutton(editMenu,text = 'Menu Item',variable=item_choice_intvar,value = 1,bg = 'black')
dealChoice = tk.Radiobutton(editMenu,text = 'Special Deal',variable=item_choice_intvar,value = 2,bg = 'black')
itemChoice.grid(column = 0,row=1)
dealChoice.grid(column = 1,row=1)
courseText = tk.Label(editMenu,text = "Select Course:",font = ("Garamond",20),bg = 'black')
courseText.grid(column = 0,row = 2, sticky = 'N', pady = 10, padx = 20)
entreeChoice = tk.Radiobutton(editMenu,text = 'Entree',variable=course_choice_intvar,value = 1,bg = 'black')
mainChoice = tk.Radiobutton(editMenu,text = 'Main',variable=course_choice_intvar,value = 2,bg = 'black')
dessertChoice = tk.Radiobutton(editMenu,text = 'Dessert',variable=course_choice_intvar,value = 3,bg = 'black')
entreeChoice.grid(column = 0, row = 3)
mainChoice.grid(column = 1, row = 3,sticky = 'W')
dessertChoice.grid(column = 2, row = 3,sticky = 'W')
itemNameText = tk.Label(editMenu,text = 'Name: ',font = ("Garamond",15),bg = 'black')
nameTextField = tk.Text(editMenu,height=1,width=15)
itemNameText.grid(column = 0, row = 4,sticky='W',padx = 25,pady = 30)
nameTextField.grid(column = 1, row = 4,sticky = 'W')
我尝试过使用 sticky
和 pad
,但它们似乎没有起作用。
英文:
I have a program which spawns a second window and I want the text field to be closer to 'Name: ' but I don't know how to go about it.
def editWindow():
item_choice_intvar = tk.IntVar()
course_choice_intvar = tk.IntVar()
editMenu = tk.Toplevel()
editMenu.geometry('400x400')
editMenu.resizable(False,False)
editMenu['bg'] = 'black'
editMenu.title('Configure Menu')
addItem = tk.Label(editMenu,text = "Add Item:",font = ("Garamond",20),bg = 'black')
addItem.grid(column = 0,row = 0, sticky = 'WN', pady = 10, padx = 20)
itemChoice = tk.Radiobutton(editMenu,text = 'Menu Item',variable=item_choice_intvar,value = 1,bg = 'black')
dealChoice = tk.Radiobutton(editMenu,text = 'Special Deal',variable=item_choice_intvar,value = 2,bg = 'black')
itemChoice.grid(column = 0,row=1)
dealChoice.grid(column = 1,row=1)
courseText = tk.Label(editMenu,text = "Select Course:",font = ("Garamond",20),bg = 'black')
courseText.grid(column = 0,row = 2, sticky = 'N', pady = 10, padx = 20)
entreeChoice = tk.Radiobutton(editMenu,text = 'Entree',variable=course_choice_intvar,value = 1,bg = 'black')
mainChoice = tk.Radiobutton(editMenu,text = 'Main',variable=course_choice_intvar,value = 2,bg = 'black')
dessertChoice = tk.Radiobutton(editMenu,text = 'Dessert',variable=course_choice_intvar,value = 3,bg = 'black')
entreeChoice.grid(column = 0, row = 3)
mainChoice.grid(column = 1, row = 3,sticky = 'W')
dessertChoice.grid(column = 2, row = 3,sticky = 'W')
itemNameText = tk.Label(editMenu,text = 'Name: ',font = ("Garamond",15),bg = 'black')
nameTextField = tk.Text(editMenu,height=1,width=15)
itemNameText.grid(column = 0, row = 4,sticky='W',padx = 25,pady = 30)
nameTextField.grid(column = 1, row = 4,sticky = 'W')
I've tried using sticky and pad but they don't seem to be helping.
答案1
得分: 2
只需将标签和文本框放在另一个框架内:
def editWindow():
...
# 用于容纳标签和文本框的框架
frame = tk.Frame(editMenu, bg='black')
frame.grid(row=4, column=0, columnspan=3, sticky='W')
itemNameText = tk.Label(frame, text='Name:', font=("Garamond", 15), bg='black', fg='white')
nameTextField = tk.Text(frame, height=1, width=15) # 为什么不使用 Entry 组件呢?
itemNameText.pack(side='left', padx=25, pady=30)
nameTextField.pack(side='left')
结果:
英文:
Simply put the label and text box inside another frame:
def editWindow():
...
# frame to hold the label and text box
frame = tk.Frame(editMenu, bg='black')
frame.grid(row=4, column=0, columnspan=3, sticky='W')
itemNameText = tk.Label(frame, text='Name:', font=("Garamond",15), bg= 'black', fg='white')
nameTextField = tk.Text(frame, height=1, width=15) # why not use Entry widget instead?
itemNameText.pack(side='left', padx=25, pady=30)
nameTextField.pack(side='left')
Result:
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论