01
创建菜单
Tk中菜单控件封装在Menu类中。
menubar = Menu(parent)
上面代码指定menbar为Menu,且父控件为parent
xmenu = Menu(menubar)
menu系列按照树结构组织,结构如下:
menubar
|
xmenu
接下来为xmenu增加两个命令项:
xmenu.add_command(label='打开',command=fun) xmenu.add_command(label='关闭',command=fun)
接着,将menubar增加下拉菜单,并指向子菜单 xmenu:
menubar.add_cascade(label='文件',menu=xmenu)
实现的效果如下所示:
02
封装自己的控件
Label和Entry组合为一个新的控件
如下,内部创建Label,Entry,通过grid布局控件。
class LabEnt(object): def __init__(self,parent,cnf={}): """ label and entry combination :param cnf: 1. parent 2. label config: labtxt 3. row 5. column """ if parent is None: raise Exception('must give parent widget') labtxt='label' if 'labtxt' in cnf.keys(): labtxt = cnf['labtxt'] irow=0 if 'row' in cnf.keys(): irow=cnf['row'] icolumn=0 if 'column' in cnf.keys(): icolumn=cnf['column'] lab = Label(parent, text=labtxt) self.ent = Entry(parent) lab.grid(row=int(irow),column=int(icolumn),padx=10,pady=10) self.ent.grid(row=int(irow),column=int(icolumn)+1,padx=10,pady=10) def get(self): return self.ent.get()
使用LabEnt控件,
le_sku = LabEnt(frame, cnf={'labtxt':'sku编号','row':'0','column':'0'}) le_ord = LabEnt(frame, cnf={'labtxt': '订单编号', 'row': '0', 'column': '2'})
效果如下: