XX:在干嘛?
YY:没干嘛,瞎得瑟...
毕业前的东东搞得差不多,只等老师不时下发的修改task。因此, 这几天一直在捣鼓同学的实验,一是发扬雷峰精神;二是加深对python的理解和使用,开始了激情的算法实现和界面的绘制日子。这里主要是谈论用Tkinter做界面部分(做了之后,才知道什么是轻量级的,很多控件没有--最重要的报表控件没有,上网搜了下估计得是自己写个才行)。
#-*- coding:UTF-8 -*- import Tkinter from Tkinter import class MainFrame(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title('Test_FrameSize') self.pack(fill=BOTH, expand=1, padx=1, pady=2) # Label(self, text='hello').pack() # TODO : 最好是让它在外面pack FirstFrame(self, 'blue') FirstFrame(self, 'red') # FirstFrame(self, 'blue').pack() # TODO : 容器受控件大小影响Frame的值 if没有pack_propagate # FirstFrame(self, 'red').pack() class FirstFrame(Frame): def __init__(self, parent, bgColor): Frame.__init__(self, parent) self.parent = parent self.initUI(bgColor) def initUI(self, bgColor): self.config(width=200, height=200, borderwidth=2, bg=bgColor) self.pack() # TODO : 容器内部的控件大小最大与容器一样大且容器多大,本身不会受窗口大小的影响 if 有pack_propagate self.pack_propagate(0) Label(self, text='hello', width=10, height=300).pack() #TODO : 控件的大小可由width直接 def main(): root = Tk() root.geometry('300x300') app = MainFrame(root) root.mainloop() if __name__ == '__main__': main()
这个是做完了同学项目后,打算对开发的东东进行重构前展开的Tkinter容器大小,控件大小的探索,要知道刚开始用时一阵头大(因为时间紧迫,交差后打完dota闲下来才方便研究下)。
需要注意的就是Frame如果设置大小的话,只有当使用了pack_propagate(0)或者grid_propagate(0)之后(width,height)才起作用,而且调用前Frame要pack或者grid了。
附个简易Tkinter教程:http://zetcode.com/tutorials/tkintertutorial/