天天看点

Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

Tkinter07_Message & Spinbox & PanedWindow & Toplevel

标签(空格分隔): Tkinter

文章目录

  • Tkinter07_Message & Spinbox & PanedWindow & Toplevel
      • Message 组件
      • Spinbox 组件
      • PanedWindow 组件
      • Toplevel 组件

Message 组件

Message(消息)组件是 Label 组件的变体,用于显示多行文本消息。Message 组件能够自动换行,并调整文本的尺寸使其适应给定的尺寸。

例 40

from tkinter import *

root = Tk()

w1 = Message(root, text="这是一则消息", width=100)
w1.pack()

w2 = Message(root, text="这是一则\n骇人听闻的长长长长长消息", width=100)
w2.pack()

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

Spinbox 组件

Spinbox 组件(Tk8.4 新增)是 Entry 组件的变体,用于从一些固定的值中选取一个。Spinbox 组件和 Entry 组件用法相似,主要区别是使用 Spinbox 组件,可以通过范围或者元组指定允许用户输入的内容。

例 41

from tkinter import *

root = Tk()
w = Spinbox(root, from_=0, to=10)
w.pack()

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

还可以通过元组指定允许输入的值:

w = Spinbox(root, values=("小甲鱼", "风介", "wei_Y", "戴宇轩"))
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

PanedWindow 组件

PanedWindow 组件(Tk8.4 新增)是一个空间管理组件。跟 Frame 组件类似,都是为组件提供一个框架,不过 PanedWindow 允许用户调整应用程序的空间划分。

例 42

创建一个两窗格的 PanedWindow 组件。

from tkinter import *

m = PanedWindow(orient=VERTICAL)
m.pack(fill=BOTH, expand=1)
top = Label(m, text="top pane")
m.add(top)
bottom = Label(m, text="bottom pane")
m.add(bottom)

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

例 43

创建一个三窗格的 PanedWindow 组件。

from tkinter import *

m1 = PanedWindow()
m1.pack(fill=BOTH, expand=1)
left = Label(m1, text="left pane")
m1.add(left)
m2 = PanedWindow(orient=VERTICAL)
m1.add(m2)
top = Label(m2, text="top pane")
m2.add(top)
bottom = Label(m2, text="bottom pane")
m2.add(bottom)

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

这些不同窗格事实上有一条“分隔线”(sash)隔开。不妨把鼠标缓慢移动到大概的位置,当鼠标指针改变的时候拖动鼠标,也可以把“分隔线”显式地显示出来,并且可以为它附上一个“手柄”(handle):

例 44

from tkinter import *

m1 = PanedWindow(showhandle=True, sashrelief=SUNKEN)
m1.pack(fill=BOTH, expand=1)
left = Label(m1, text="left pane")
m1.add(left)
m2 = PanedWindow(orient=VERTICAL, showhandle=True, sashrelief=SUNKEN)
m1.add(m2)
top = Label(m2, text="top pane")
m2.add(top)
bottom = Label(m2, text="bottom pane")
m2.add(bottom)

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

Toplevel 组件

Toplevel(顶级窗口)组件类似于 Frame 组件,但 Toplevel 组件是一个独立的顶级窗口,这种窗口通常拥有标题、边框等部件。Toplevel 组件通常用在显示额外的窗口、对话框和其他弹出窗口中。

例 45

在 root 窗口添加一个按钮用于创建一个顶级窗口,点一下出现一个。

from tkinter import *

root = Tk()

def create():
    top = Toplevel()
    top.title("FishC Demo")

    msg = Message(top, text="I love FishC.com")
    msg.pack()

Button(root, text="创建顶级窗口", command=create).pack()

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

attributes() 方法用于设置和获取窗口属性,如果只给出选项名,将返回当前窗口该选项的值。注意:一下选项不支持关键字参数,需要在选项前添加横杠(-)并用字符串的方式表示,用逗号(,)隔开选项和值。

例 46

将 Toplevel 窗口设置为 50% 透明。

from tkinter import *

root = Tk()

def create():
    top = Toplevel()
    top.attributes("-alpha", 0.5)
    top.title("FishC Demo")

    msg = Message(top, text="I love FishC.com")
    msg.pack()

Button(root, text="创建顶级窗口", command=create).pack()

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

摘自《零基础入门学习Python》

参考链接:

An Introduction To Tkinter

Tkinter汇总

Python GUI编程(Tkinter)

Tkinter颜色方案举例

python tkinter可以使用的颜色

tkinter学习-菜单与画布

程序设计思想与方法–第五章

用Python中的tkinter模块作图

继续阅读