首页 > 其他 > 详细

Pmw大控件

时间:2019-09-05 00:59:21      阅读:144      评论:0      收藏:0      [点我收藏+]

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
指定使用哪种验证

Pmw.EntryField

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()

技术分享图片

Pmw大控件

原文:https://www.cnblogs.com/vocus/p/11462653.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!