[英]Multiple Label Frame, tkinter GUI did not match the specific row and column
I create 2 frame in column 1 in my program, the first one is ok, i use sticky = N,it position properly at the top, but for the next frame, it does not appear at the bottom of my program, here is the我在我的程序的第 1 列中创建了 2 个框架,第一个是可以的,我使用粘性 = N,它正确定位在顶部,但是对于下一帧,它没有出现在我的程序底部,这是
[ http://i.stack.imgur.com/01sSf.jpg] [ http://i.stack.imgur.com/01sSf.jpg]
here is how i define the first frame:这是我定义第一帧的方式:
def DateSelection(self):
self.SelectDateFrame = LabelFrame(self,text="Period Selection",height= 215,width =260)
self.SelectDateFrame.grid(row= 0, column=1,padx=2,sticky=N)
self.SelectDateFrame.grid_propagate(0)
instructionLabel=Label(self.SelectDateFrame,text="Enter a date or use the select date button.")
instructionLabel.grid(row =1,column=1)
startDateLabel=Label(self.SelectDateFrame,text="Start Date:")
startDateLabel.grid(row =2,column=1,sticky=W)
startDate_ent =Entry(self.SelectDateFrame,width=40)
startDate_ent.grid(row =3, column =1,padx=6,pady=6)
endDateLabel=Label(self.SelectDateFrame,text="End Date:")
endDateLabel.grid(row =5,column=1,sticky=W)
endDate_ent =Entry(self.SelectDateFrame,width=40)
endDate_ent.grid(row =6, column =1,padx=6,pady=6)
# Create the Select start date and Select end date button for UAH
StartDatebtn = Button(self.SelectDateFrame, text="Select Start Date", command=printMessage,height =1, width =12)
StartDatebtn.grid(row=4,column=1)
EndDatebtn = Button(self.SelectDateFrame, text="Select End Date", command=printMessage,height =1, width =12)
EndDatebtn.grid(row=7,column= 1)
This is the second frame code which did not appear below the first frame in my program:这是在我的程序中没有出现在第一帧下方的第二帧代码:
def UASuggestion(self):
self.SuggestUAFrame = LabelFrame(self,text="Case Suggestion for UA",height= 220,width =220)
self.SuggestUAFrame.grid(row=8, column=1,padx=2,pady=2,sticky=N,)
self.SuggestUAFrame.grid_propagate(0)
I think can set the grid_rowconfigure and grid_columnconfigure but not sure how this can fix in my code,Regards.我认为可以设置 grid_rowconfigure 和 grid_columnconfigure 但不确定如何在我的代码中解决这个问题,问候。
Complete coding:完整的编码:
from tkinter import *
class ConfigureUAinterface(Frame):
def __init__(self, root):
root.minsize(width=700, height=500)
root.maxsize(width=700, height=500)
Frame.__init__(self, root)
Grid.config(self)
self.ConfigurationUA()
self.DateSelection()
self.UASuggestion()
def ConfigurationUA(self):
self.UAHFrame = LabelFrame(self,text="User Activity History",height= 495,width =200)
self.UAHFrame.grid(row= 0, column=0,padx=2)
self.UAHFrame.grid_propagate(0)
def setUACheck():
Jumplistvar.set(True)
USBDevicevar.set(True)
Prefetchvar.set(True)
UserAssistvar.set(True)
WindowsSearchvar.set(True)
GoogleSearchHistoryvar.set(True)
NetworkProfilevar.set(True)
DownloadHistoryvar.set(True)
InstallProgramCheckvar.set(True)
MRUvar.set(True)
ShellBagvar.set(True)
BrowserHistoryvar.set(True)
BrowserFormHistoryvar.set(True)
def setUAUNCheck():
Jumplistvar.set(False)
USBDevicevar.set(False)
Prefetchvar.set(False)
UserAssistvar.set(False)
WindowsSearchvar.set(False)
GoogleSearchHistoryvar.set(False)
NetworkProfilevar.set(False)
DownloadHistoryvar.set(False)
InstallProgramCheckvar.set(False)
MRUvar.set(False)
ShellBagvar.set(False)
BrowserHistoryvar.set(False)
BrowserFormHistoryvar.set(False)
#Set the UAH variable as a booloean
Jumplistvar = BooleanVar()
Jumplistvar.set(False)
JumplistCheck = Checkbutton(self.UAHFrame,text="Jumplist", variable=Jumplistvar)
JumplistCheck.grid(row=1,column=0,sticky=W)
USBDevicevar = BooleanVar()
USBDevicevar.set(False)
USBDeviceCheck = Checkbutton(self.UAHFrame,text="USB Device", variable=USBDevicevar)
USBDeviceCheck.grid(row=2,column=0,sticky=W)
Prefetchvar = BooleanVar()
Prefetchvar.set(False)
PrefetchCheck = Checkbutton(self.UAHFrame,text="Prefetch", variable=Prefetchvar)
PrefetchCheck.grid(row=3,column=0,sticky=W)
UserAssistvar = BooleanVar()
UserAssistvar.set(False)
UserAssistCheck = Checkbutton(self.UAHFrame,text="User Assist", variable=UserAssistvar)
UserAssistCheck.grid(row=4,column=0,sticky=W)
WindowsSearchvar = BooleanVar()
WindowsSearchvar.set(False)
WindowsSearchCheck = Checkbutton(self.UAHFrame,text="Windows Search", variable=WindowsSearchvar)
WindowsSearchCheck.grid(row=5,column=0,sticky=W)
GoogleSearchHistoryvar = BooleanVar()
GoogleSearchHistoryvar.set(False)
GoogleSearchHistoryCheck = Checkbutton(self.UAHFrame,text="Google Search History",
variable=GoogleSearchHistoryvar)
GoogleSearchHistoryCheck.grid(row=6,column=0,sticky=W)
NetworkProfilevar = BooleanVar()
NetworkProfilevar.set(False)
NetworkProfileCheck = Checkbutton(self.UAHFrame,text="Network Profile", variable=NetworkProfilevar)
NetworkProfileCheck.grid(row=7,column=0,sticky=W)
DownloadHistoryvar = BooleanVar()
DownloadHistoryvar.set(False)
DownloadHistoryCheck = Checkbutton(self.UAHFrame,text="Download History", variable=DownloadHistoryvar)
DownloadHistoryCheck.grid(row=8,column=0,sticky=W)
InstallProgramCheckvar = BooleanVar()
InstallProgramCheckvar.set(False)
InstallProgramCheck = Checkbutton(self.UAHFrame,text="Install Programs", variable=InstallProgramCheckvar)
InstallProgramCheck.grid(row=9,column=0,sticky=W)
MRUvar = BooleanVar()
MRUvar.set(False)
MRUCheck = Checkbutton(self.UAHFrame,text="Most Recently Used(MRU) List", variable=MRUvar)
MRUCheck.grid(row=10,column=0,sticky=W)
ShellBagvar = BooleanVar()
ShellBagvar.set(False)
ShellBagCheck = Checkbutton(self.UAHFrame,text="ShellBag", variable=ShellBagvar)
ShellBagCheck.grid(row=11,column=0,sticky=W)
BrowserHistoryvar = BooleanVar()
BrowserHistoryvar.set(False)
BrowserHistoryCheck = Checkbutton(self.UAHFrame,text="Browser History", variable=BrowserHistoryvar)
BrowserHistoryCheck.grid(row=12,column=0,sticky=W)
BrowserFormHistoryvar = BooleanVar()
BrowserFormHistoryvar.set(False)
BrowserFormHistoryCheck = Checkbutton(self.UAHFrame,text="Browser Form History", variable=BrowserFormHistoryvar)
BrowserFormHistoryCheck.grid(row=13,column=0,sticky=W)
# Create the check and uncheck button for UAH
UACheckbtn = Button(self.UAHFrame, text="Check all UA", command=setUACheck,height =2, width =21)
UACheckbtn.grid(row=14,column= 0,pady=6,padx=18)
UAunCheckbtn = Button(self.UAHFrame, text="Uncheck all UA", command=setUAUNCheck,height =2, width =21)
UAunCheckbtn.grid(row=15,column= 0,pady=6,padx=18)
def DateSelection(self):
self.SelectDateFrame = LabelFrame(self,text="Period Selection",height= 215,width =260)
self.SelectDateFrame.grid(row= 0, column=1,padx=2,sticky=N)
self.SelectDateFrame.grid_propagate(0)
instructionLabel=Label(self.SelectDateFrame,text="Enter a date or use the select date button.")
instructionLabel.grid(row =1,column=1)
startDateLabel=Label(self.SelectDateFrame,text="Start Date:")
startDateLabel.grid(row =2,column=1,sticky=W)
startDate_ent =Entry(self.SelectDateFrame,width=40)
startDate_ent.grid(row =3, column =1,padx=6,pady=6)
endDateLabel=Label(self.SelectDateFrame,text="End Date:")
endDateLabel.grid(row =5,column=1,sticky=W)
endDate_ent =Entry(self.SelectDateFrame,width=40)
endDate_ent.grid(row =6, column =1,padx=6,pady=6)
# Create the Select start date and Select end date button for UAH
StartDatebtn = Button(self.SelectDateFrame, text="Select Start Date", command=printMessage,height =1, width =12)
StartDatebtn.grid(row=4,column=1)
EndDatebtn = Button(self.SelectDateFrame, text="Select End Date", command=printMessage,height =1, width =12)
EndDatebtn.grid(row=7,column= 1)
def UASuggestion(self):
self.SuggestUAFrame = LabelFrame(self,text="Case Suggestion for UA",height= 220,width =220)
self.SuggestUAFrame.grid(row=8, column=1,padx=2,pady=2,sticky=N,)
self.SuggestUAFrame.grid_propagate(0)
def printMessage():
print("Wow this actually worked!")
root = Tk()
root.title("UA Configuration")
cuai= ConfigureUAinterface(root)
root.mainloop()
: This is a screenshot showing how "Case Suggestion" fails to appear right below "Period Selection" screenshot :这是一个屏幕截图,显示了“案例建议”如何无法出现在“期间选择”屏幕截图的正下方
The frame is appearing exactly where you tell it to appear.框架恰好出现在您告诉它出现的位置。 You placed "Case suggestion ..." in row 8, which means it must appear below row 0. However, row 0 is very tall, which means anything below it will be off the visible part of the screen since you forced the screen to be a specific size and don't allow it to be re-sized.
您将“案例建议...”放在第 8 行,这意味着它必须出现在第 0 行下方。但是,第 0 行非常高,这意味着它下方的任何内容都将脱离屏幕的可见部分,因为您强制屏幕显示是一个特定的大小,不允许它被重新调整大小。
If I understand what you want ("Case suggestion..." immediately below "Period Selection"), you need to do two things for a quick and dirty fix:如果我明白您想要什么(“案例建议...”紧接在“期间选择”下方),您需要做两件事来快速修复:
For example:例如:
self.UAHFrame.grid(row= 0, column=0, rowspan=2, ...)
...
self.SuggestUAFrame.grid(row=1, column=1,...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.