我是tkinter的初学者,一直在玩弄我学到的东西。下面是我发现的代码,它只与回答我的问题相关,下面是我所附的图形用户界面图片
# Frame for the time spinners
timeFrame = tkinter.LabelFrame(mainWindow, text="Time")
timeFrame.grid(row=3, column=0, sticky="new")
# Time spinners
hourSpinner = tkinter.Spinbox(timeFrame, width=2, values=tuple(range(0, 24)))
minuteSpinner = tkinter.Spinbox(timeFrame, width=2, from_=0, to=59)
secondSpinner = tkinter.Spinbox(timeFrame, width=2, from_=0, to=59)
hourSpinner.grid(row=0, column=0)
tkinter.Label(timeFrame, text=":").grid(row=0, column=1)
minuteSpinner.grid(row=0, column=2)
tkinter.Label(timeFrame, text=":").grid(row=0, column=3)
secondSpinner.grid(row=0, column=4)
timeFrame.config(padx=36)
canvas = tkinter.Canvas(mainWindow, width=50, height=50, bg="red")
canvas.grid(row=4, column=0)
在这里,我似乎无法理解包含时间成分的标签框和红色画布之间的填充是从哪里来的(我使用剪贴工具以黄色突出显示了我所指的填充)。
我觉得标签框和红色画布之间不应该有填充物,画布应该从标签框末端的某个地方开始
如果有人能告诉我这些填充物的来源,以及如何使画布从标签框的末端开始,我将不胜感激。
但是,如果任何阅读此问题的人发现他/她需要查看完整的代码才能回答,我已在下面附上我为构建此问题而键入的完整代码
try:
import tkinter
except ImportError: # Python2
import Tkinter as tkinter
import os
mainWindow = tkinter.Tk()
mainWindow.title("Grid Demo")
mainWindow.geometry("640x480+320+125")
label = tkinter.Label(mainWindow, text="Tkinter Grid Demo")
label.grid(row=0, column=0, columnspan=3)
mainWindow.columnconfigure(0, weight=1)
mainWindow.columnconfigure(1, weight=1)
mainWindow.columnconfigure(2, weight=3)
mainWindow.columnconfigure(3, weight=3)
mainWindow.columnconfigure(4, weight=3)
mainWindow.rowconfigure(0, weight=1)
mainWindow.rowconfigure(1, weight=10)
mainWindow.rowconfigure(2, weight=1)
mainWindow.rowconfigure(3, weight=3)
mainWindow.rowconfigure(4, weight=3)
fileList = tkinter.Listbox(mainWindow)
fileList.grid(row=1, column=0, rowspan=2, sticky="nsew")
fileList.config(relief="sunken", borderwidth=2)
for zone in os.listdir(r"C:\Windows\System32"):
fileList.insert(tkinter.END, zone)
listScroll = tkinter.Scrollbar(mainWindow, orient="vertical", command=fileList.yview)
fileList.config(yscrollcommand=listScroll.set)
listScroll.grid(row=1, column=1, rowspan=2, sticky="nsw")
# Frame for the radio buttons
optionFrame = tkinter.LabelFrame(mainWindow, text="File Details")
optionFrame.grid(row=1, column=2, sticky="ne")
rbValue = tkinter.IntVar()
rbValue.set(3)
# Radio Buttons
radio1 = tkinter.Radiobutton(optionFrame, text="Filename", value=1, variable=rbValue)
radio2 = tkinter.Radiobutton(optionFrame, text="Path", value=2, variable=rbValue)
radio3 = tkinter.Radiobutton(optionFrame, text="Timestamp", value=3, variable=rbValue)
radio1.grid(row=0, column=0, sticky="w")
radio2.grid(row=1, column=0, sticky="w")
radio3.grid(row=2, column=0, sticky="w")
# Widget to display the result
resultLabel = tkinter.Label(mainWindow, text="Result")
resultLabel.grid(row=2, column=2, sticky="nw")
result = tkinter.Entry(mainWindow)
result.grid(row=2, column=2, sticky="sw")
# Frame for the time spinners
timeFrame = tkinter.LabelFrame(mainWindow, text="Time")
timeFrame.grid(row=3, column=0, sticky="new")
# Time spinners
hourSpinner = tkinter.Spinbox(timeFrame, width=2, values=tuple(range(0, 24)))
minuteSpinner = tkinter.Spinbox(timeFrame, width=2, from_=0, to=59)
secondSpinner = tkinter.Spinbox(timeFrame, width=2, from_=0, to=59)
hourSpinner.grid(row=0, column=0)
tkinter.Label(timeFrame, text=":").grid(row=0, column=1)
minuteSpinner.grid(row=0, column=2)
tkinter.Label(timeFrame, text=":").grid(row=0, column=3)
secondSpinner.grid(row=0, column=4)
timeFrame.config(padx=36)
canvas = tkinter.Canvas(mainWindow, width=50, height=50, bg="red")
canvas.grid(row=4, column=0)
mainWindow.mainloop()
原因是您配置的行的权重。如果删除这些行:
布局将如您所愿。有关更多信息,请查看以下答案:https://stackoverflow.com/a/45850468
相关问题 更多 >
编程相关推荐