0

这是我的代码,我真正想做的是在框架中间设置 URL 标签和旁边的输入文本,并在 URL 和输入文本字段下方添加 3 个按钮。

  import tkinter as tk
  from tkinter import *
  root = tk.Tk()


root.geometry("520x400")

frame1 = tk.LabelFrame(root, text="my_first_window", width=400,  height=200, bd=5)
Label(root, text="URL:").grid(row=0, column=1 ,sticky=W)

e1 = Entry(root)
e1.grid(row=0, column=2)
frame1.grid(row=0, column=0, columnspan=7, padx=8)

Button(root, text='BACK', command=lambda:print('BACK')).grid(row=8, column=1, sticky=W, pady=4)
Button(root, text='NEXT', command=lambda:print('NEXT')).grid(row=8, column=2, sticky=W, pady=4)
Button(root, text='CANCLE', command=lambda:print('CANCLE')).grid(row=8, column=3, sticky=W, pady=4)


mainloop()
4

1 回答 1

0

如果您坚持使用该.grid()方法,则可以将以下内容添加到您的代码中:

for column in range(10):
    Grid.columnconfigure(root, column, weight=1)

for row in range(10):
    Grid.rowconfigure(root, row, weight=1)

这意味着网格的列和行将在窗口中平均分配给它们可用的空间。将此与sticky属性结合使用.grid()将使您获得所需的结果。


但是,从主观上讲,您可能更容易切换到该.pack()方法,该方法(至少在我自己看来)允许更轻松地配置和管理 tkinter GUI。

您可以执行以下操作:

from tkinter import *

root = Tk()

root.geometry("520x400")

frame1 = LabelFrame(root, text="my_first_window", width=400,  height=200, bd=5)
Label(frame1, text="URL:").pack(side="left", fill="x")

e1 = Entry(frame1)
e1.pack(side="left", fill="x", expand=True)
frame1.pack(fill="both", expand=True)

Button(root, text='BACK', command=lambda:print('BACK')).pack(fill="both", expand=True, side="left", padx=5, pady=5)
Button(root, text='NEXT', command=lambda:print('NEXT')).pack(fill="both", expand=True, side="left", padx=5, pady=5)
Button(root, text='CANCLE', command=lambda:print('CANCLE')).pack(fill="both", expand=True, side="left", padx=5, pady=5)

root.mainloop()

以上使用了很多不同的新想法,这些想法在 Stack Overflow 上被问过很多次,所以我将把你链接到Bryan Oakley 这个奇妙的答案

于 2017-10-17T10:05:24.503 回答