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/