Tkinter - 其他组件(Message/Spinbox/Panedwindow/Toplevel)

Message

Label组件变体用于显示多行文本并能自动换行调整文本尺寸使之适应给定尺寸

通常用于显示简单的文本消息,可以用label代替,显示复杂文本建议用text组件。

参数和方法和label差不多。

root = Tk()

w1 = Message(root, text="This is a pretty long message, you need wrap it", width=100)

w1.pack()

Spinbox

Entry组件变体,用于从固定值中选择一个,通常用于在限定数字中选取的情况下代替普通的 Entry 组件。

Spinbox 组件跟 Entry 组件用法非常相似,主要区别是使用 Spinbox 组件,你可以通过范围或者元组指定允许用户输入的内容。

increment

1. 该选项指定当用户每次点击调节箭头的时候递增(递减)的精度

2. 例如 from_=1, to=10, increment=0.5,那么每次用户点击调节箭头的时候,输入框中的数字递增(递减)0.5

validate

validatecommand

1. 该选项设置是否启用内容验证

2. 详见 Entry 组件最下方小甲鱼关于验证详解

values

1. 提供两个方法限定用户输入的内容,一种是通过 from_ 和 to 选项设置范围,另一种则是将可选值以元组的形式赋值给 values 选项

2. 例如 values= ("小甲鱼", "~风介~", "wei_Y", "戴宇轩") 则允许用户在这 4 个字符串中选择

wrap

1. 默认情况下(False),当输入框中的值是第一个(最后一个)的时候,再点击向上(向下)调节箭头,内容不会改变

2. 当该选项的值设置为 True,内容开启循环。

PanedWindow

和Frame组件类似的空间管理组件, 但是可以自定义布局允许让用户调整应用程序的空间划分。该组件会为每一个子组件生成一个独立地窗格,用户可以自由调整窗格的大小。

不需要创建root窗口,采用add()方法将其他组件放进去

m = PanedWindow(orient=VERTICAL)

m.pack(fill=BOTH, expand=1)

sashrelief

1. 设置分割线的样式

2. 默认值是:FLAT

3. 另外你还可以设置 SUNKEN,RAISED,GROOVE 或 RIDGE

sashwidth

设置分割线的宽度

showhandle

1. 设置是否显示调节窗格的手柄

2. 默认值为 False

Tkinter - 其他组件(Message/Spinbox/Panedwindow/Toplevel)_第1张图片

 

 

Toplevel

类似root窗口,属于顶级窗口拥有标题,边框等组件,通常用在显示额外的窗口、对话框和其他弹出窗口上。

EG:

	from tkinter import *
	
	root = Tk()
	
	# Message组件
	m = Message(root, text='This is a very important message, so sit down and listen to me!', width=100)
	m.pack()
	
	# Spinbox组件
	Spinbox(root, from_=0, to=10, wrap=True, increment=2).pack(side='left') # 允许内容循环
	Spinbox(root, from_=0, to=10, values=('East', 'West', 'South', 'North')).pack(side='right')
	
	# PanedWindow组件
	p1 = PanedWindow(showhandle=True, sashrelief=SUNKEN) # 显示句柄和轮廓线
	p1.pack(fill=BOTH, expand=1)
	left = Label(p1, text='left side')
	p1.add(left)
	
	p2 = PanedWindow(orient=VERTICAL, showhandle=True, sashrelief=SUNKEN)
	p1.add(p2)
	
	top = Label(p2, text='TOP RIGHT')
	bottom = Label(p2, text='BOTTOM RIGHT')
	p2.add(top)
	p2.add(bottom)
	
	# Toplevel组件
	def create_tl():
	    tl = Toplevel()
	    tl.attributes('-alpha', 0.5) # 设置透明度50%
	    tl.title('Toplevel Demo')
	    Message(tl, text='This is a prompt by toplevel').pack()
	    
	Button(root, text='Create Toplevel', command=create_tl).pack()
	
	mainloop()

附录:

下边这一系列方法用于与窗口管理器进行交互。他们可以被 Tk(根窗口)进行调用,同样也适用于 Toplevel(顶级窗口)。

注:并非所有操作系统均完全支持下方所有方法的实现。

aspect(minNumer=None, minDenom=None, maxNumer=None, maxDenom=None)

-- 控制该窗口的宽高比(width:height)

-- 宽高比限制在:minNumer / minDenom ~ maxNumer / maxDenom

-- 如果忽略参数,则返回一个 4 元组表示当前的限制(如果有的话)

attributes(*args)

-- 设置和获取窗口属性

-- 如果你只给出选项名,将返回当前窗口该选项的值

-- 注意:以下选项不支持关键字参数,你需要在选项前添加横杠(-)并用字符串的方式表示,用逗号(,)隔开选项和值。

-- 例如你希望设置窗口的透明度为 50%,你应该使用 attribute("-alpha", 0.5) 代替 attribute(alpha=0.5)

-- 下方表格列举了 args 可以使用各个选项的具体含义及用法:

选项

含义

alpha

1.(Windows,Mac)控制窗口的透明度

2. 1.0 表示不透明,0.0 表示完全透明

3. 该选项并不支持所有的系统,对于不支持的系统,Tkinter 绘制一个不透明(1.0)的窗口

disabled

(Windows)禁用整个窗口(这时候你只能从任务管理器中关闭它)

fullscreen

(Windows,Mac)如果设置为 True,则全屏显示窗口

modified

(Mac)如果设置为 True,该窗口被标记为改动过

titlepath

(Mac)设置窗口代理图标的路径

toolwindow

(Windows)如果设置为 True,该窗口采用工具窗口的样式

topmost

(Windows,Mac)如果设置为 True,该窗口将永远置于顶层

client(name=None)

-- 设置和获取 WM_CLIENT_MACHINE 属性

-- 如果要删除 WM_CLIENT_MACHINE 属性,赋值为空字符串即可

-- 该属性仅支持 X 窗口系统的窗口管理器,其他系统均忽略

colormapwindows(*wlist)

-- 设置和获取 WM_COLORMAP_WINDOWS 属性

-- 该属性仅支持 X 窗口系统的窗口管理器,其他系统均忽略

command(value=None)

-- 设置和获取 WM_COMMAND 属性

-- 该属性仅支持 X 窗口系统的窗口管理器,其他系统均忽略

deiconify()

-- 显示窗口

-- 默认情况下新创建的窗口都会显示在屏幕上,但使用 iconify() 或 withdraw() 方法可以在屏幕上移除窗口

focusmodel(model=None)

-- 设置和获取焦点模式

frame()

-- 返回一个字符串表示当前系统特征

-- 对于类 Unix 系统,返回值是 X 窗口标识符

-- 对于 Windows 系统,返回值是 HWND 强制转换为长整形的结果

geometry(geometry=None)

-- 设置和获取窗口的尺寸

-- geometry 参数的格式为:"%dx%d+%d+%d" % (width, height, xoffset, yoffset)

grid(baseWidth=None, baseHeight=None, widthInc=None, heightInc=None)

-- 通知窗口管理器该窗口将以网格的形式重新调整尺寸

-- baseWidth 和 baseHeight 指定 Tk_GeometryRequest 要求的网格单元数

-- widthInc 和 heightInc 指定网格单元的宽度和高度(像素)

group(window=None)

-- 将窗口添加到窗口群中

-- window 参数指定控制窗口群的主窗口

-- 如果忽略该参数,将返回当前窗口群的主窗口

iconbitmap(bitmap=None, default=None)

-- 设置和获取窗口的图标

-- 例如 root.iconbitmap(bitmap="FishC.ico")

-- default 参数可以用于指定由该窗口创建的子窗口的默认图标

iconify()

-- 将窗口图标化(最小化)

-- 需要重新显示窗口,使用 deiconify() 方法

-- 该方法会使得 state() 返回 "iconic"

iconmask(bitmap=None)

-- 设置和获取位图掩码

iconname(newName=None)

-- 设置和获取当窗口图标化(最小化)时的图标名字

iconposition(x=None, y=None)

-- 设置和获取当窗口图标化(最小化)时的图标位置

iconwindow(pathName=None)

-- 设置和获取当窗口图标化(最小化)时的组件窗口

-- 该方法会使得 state() 返回 "icon"

maxsize(width=None, height=None)

-- 设置和获取该窗口的最大尺寸

minsize(width=None, height=None)

-- 设置和获取该窗口的最小尺寸

overrideredirect(boolean=None)

-- 如果参数为 True,该窗口忽略所有的小部件(也就是说该窗口将没有传统的标题栏、边框等部件)

positionfrom(who=None)

-- 指定窗口位置由“谁”决定

-- 如果 who 参数是 "user",窗口位置由用户决定

-- 如果 who 参数是 "program",窗口位置由系统决定

protocol(name=None, func=None)

-- 将回调函数 func 与相应的规则 name 绑定

-- name 参数可以是 "WM_DELETE_WINDOW":窗口被关闭的时候

-- name 参数可以是 "WM_SAVE_YOURSELF":窗口被保存的时候

-- name 参数可以是 "WM_TAKE_FOCUS":窗口获得焦点的时候

resizable(width=None, height=None)

-- 指定是否可以改变该窗口的尺寸

-- width 为 True 说明允许调整窗口的水平尺寸

-- height 为 True 说明允许调整窗口的垂直尺寸

 

sizefrom(who=None)

-- 指定窗口尺寸由“谁”决定

-- 如果 who 参数是 "user",窗口位置由用户决定

-- 如果 who 参数是 "program",窗口位置由系统决定

 

state(newstate=None)

-- 设置和获得当前窗口的状态

-- newstate 的值可以是 "normal","iconic"(见 iconify),"withdrawn"(见 withdraw),"icon"(见 iconwindow)和 "zoomed"(放大,Windows 特有)

 

title(string=None)

-- 设置窗口的标题

 

transient(master=None)

-- 指定为 master 的临时窗口

 

withdraw()

-- 将窗口从屏幕上移除(并没有销毁)

-- 需要重新显示窗口,使用 deiconify() 方法

-- 该方法会使得 state() 返回 "withdrawn"

#toplevel的方法

wm_aspect(minNumer=None, minDenom=None, maxNumer=None, maxDenom=None)

-- 见上方 aspect()

wm_attributes(*args)

-- 见上方 attributes()

wm_client(name=None)

-- 见上方 client()

wm_colormapwindows(*wlist)

-- 见上方 colormapwindows()

wm_command(value=None)

-- 见上方 command()

wm_deiconify()

-- 见上方 deiconify()

wm_focusmodel(model=None)

-- 见上方 focusmodel()

wm_frame()

-- 见上方 frame()

wm_geometry(geometry=None)

-- 见上方 geometry()

wm_grid(baseWidth=None, baseHeight=None, widthInc=None, heightInc=None)

-- 见上方 grid()

wm_group(window=None)

-- 见上方 group()

wm_iconbitmap(bitmap=None, default=None)

-- 见上方 iconbitmap()

wm_iconify()

-- 见上方 iconify()

wm_iconmask(bitmap=None)

-- 见上方 iconmask()

wm_iconname(newName=None)

-- 见上方 iconname()

wm_iconposition(x=None, y=None)

-- 见上方 iconposition()

wm_iconwindow(pathName=None)

-- 见上方 iconwindow()

wm_maxsize(width=None, height=None)

-- 见上方 maxsize()

wm_minsize(width=None, height=None)

-- 见上方 minsize()

wm_overrideredirect(boolean=None)

-- 见上方 overrideredirect()

wm_positionfrom(who=None)

-- 见上方 positionfrom()

wm_protocol(name=None, func=None)

-- 见上方 protocol()

wm_resizable(width=None, height=None)

-- 见上方 resizable()

wm_sizefrom(who=None)

-- 见上方 sizefrom()

wm_state(newstate=None)

-- 见上方 state()

wm_title(string=None)

-- 见上方 title()

wm_transient(master=None)

-- 见上方 transient()

wm_withdraw()

-- 见上方 withdraw()

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