Tkinter Frame size

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/

      

你可能感兴趣的:(python,tkinter)