不幸的是,我在这个问题上花了太多时间。下面是我的代码的简化版本;
class MyApp(Frame):
def createWidgets(self):
btn_dir = Button(self, text = "Select Directory", command = self.MyDir)
start_date = Entry(self, width = 20)
end_date = Entry(self, width = 20)
btn_dir.grid(row = 0, column = 0)
start_date.grid(row = 1, column = 0)
end_date.grid(row = 2, column = 0)
self.work_dir = ''
def MyDir(self):
self.work_dir = askdirectory(title = 'Select Working Directory Folder')
myLabel = Label(text = self.work_dir)
#myLabel.pack()
myLabel.grid(row = 0, column = 1)
def error(self, date1, date2, path_1):
...... #something happens
def __init__(self, master):
Frame.__init__(self, master)
self.pack()
self.createWidgets()
root = Tk()
app = MyApp(root)
app.mainloop()
我知道我不能在同一根窗口下拥有grid()
和pack()
,我也理解这个问题是使用.pack()解决的,但是我希望该标签在特定位置grid(row = 0, column = 1)
。
如果能帮助我做这件事,我将不胜感激。
谢谢!
正如评论中提到的,您必须将每个小部件放置在框架内,因此您必须将self
作为每个小部件的父级传递。您没有为Label
传递self
,因此出现错误。
def MyDir(self):
self.work_dir = askdirectory(title = 'Select Working Directory Folder')
myLabel = Label(self,text = self.work_dir) # Use self
myLabel.grid(row = 0, column = 1)
或者另一种解决方案是删除self.pack()
并使用self.grid(row=0,column=0)
代替。