Python大控件——Pmw——是合成的控件,以Tkinter控件为基类,是完全在Python内写的。它们可以很方便地增加功能性的应用,而不必写一堆代码。特别是,组合框和内部确认计划的输入字段放在一起是个很有用的控件。
1.关于框(AboutDialog)
from tkinter import * import Pmw root=Tk() Pmw.aboutversion("1.5") Pmw.aboutcopyright(‘Copyright Company Name 1999\nAll rights reserved‘) Pmw.aboutcontact( ‘For information about this application contact:\n‘ + ‘ Sales at Company Name\n‘ + ‘ Phone: (401) 555-1212\n‘ + ‘ email: info@company_name.com‘ ) about=Pmw.AboutDialog(root,applicationname="") root.mainloop()
2.输入域
一个输入域(entry field)包含一个entry控件和多种可验证的选项。验证由一个函数执行,该函数将输入的文本作为第一个参数,并且返回三种标准值的一种,标志输入文本是否合法:
Pmw.OK:输入文本合法
Pmw.ERROR:文本非法无法显示,entry将恢复之前存储的合法的值
Pmw.PARTIAL:文本有部分合法,文本将加上用以表示输入错误的背景。
函数参数
·command
·errorbackground
默认是pink,指定输入非法或部分合法文本时,显示的背景色
·extravalidators
·invalidcommand
当输入非法文本时执行该函数,当使用setentry()设置一个非法文本,该函数也会被调用
·labelmargin
·labelpos
初始化选项,指定label组件放置在何处,如果非None,它应该是“n”,"s","e","w",中的一个或两两组合。第一个字母指定label放置在大控件的那一边,如果第二个字母也指定了,那么它表示在那一边的什么位置放置label。比如,如果labelpos是“w”,label将放置在大控件左边的中间位置;如果是“wn”,label将被放置在左边的顶部。
如果为None,那么label将不会被创建。它的默认值为None
·modifiedcommand
当entry里的值被修改时调用
·sticky
初始化选项,默认为"ew
·value
初始化选项,指定entry中初始化内容
·validate
指定使用哪种验证
from tkinter import * import Pmw root = Tk() root.option_readfile(‘optionDB‘) root.title(‘EntryField‘) Pmw.initialise() noval = Pmw.EntryField(root, labelpos=W, label_text=‘No validation‘, validate = None) real = Pmw.EntryField(root, labelpos=W, value = ‘98.4‘, label_text = ‘Real (96.0 to 107.0):‘, validate = {‘validator‘ : ‘real‘, ‘min‘ : 96, ‘max‘ : 107, ‘minstrict‘ : 0}) int = Pmw.EntryField(root, labelpos=W, label_text = ‘Integer (5 to 42):‘, validate = {‘validator‘ : ‘numeric‘, ‘min‘ : 5, ‘max‘ : 42, ‘minstrict‘ : 0}, value = ‘12‘) date = Pmw.EntryField(root, labelpos=W, label_text = ‘Date (in 2000):‘, value = ‘2000/1/1‘, validate = {‘validator‘ : ‘date‘, ‘min‘ : ‘2000/1/1‘, ‘max‘ : ‘2000/12/31‘, ‘minstrict‘ : 0, ‘maxstrict‘ : 0, }) widgets = (noval, real, int, date) for widget in widgets: widget.pack(fill=X, expand=1, padx=10, pady=5) Pmw.alignlabels(widgets) real.component(‘entry‘).focus_set() root.mainloop()
3.浮动图(Balloon)
from tkinter import * import Pmw root=Tk() Pmw.initialise() balloon=Pmw.Balloon(root) frame=Frame(root) frame.pack(padx=10,pady=5) field=Pmw.EntryField(frame,labelpos="w",label_text="Name") field.setentry("A.N.Other") field.pack(side=LEFT,padx=10) balloon.bind(field,"Your name","Enter your name") check=Button(frame,text="check") check.pack(side=LEFT,padx=10) balloon.bind(check,"Look up","Check if name is in the database") messageBar=Pmw.MessageBar(root,entry_width=40,entry_relief=GROOVE,labelpos=W,label_text="Status:") messageBar.pack(fill=X,expand=1,padx=10,pady=5) balloon.configure(statuscommand=messageBar.helpmessage) root.mainloop()
原文:https://www.cnblogs.com/vocus/p/11462653.html