tkinter 20 topLevel
References
- http://effbot.org/tkinterbook/toplevel.htm
- http://bbs.fishc.com/thread-61239-1-1.html
- http://bbs.fishc.com/thread-61246-1-1.html
简介
Toplevel(顶级窗口)组件类似于Frame 组件,但 Toplevel 组件是一个独立的顶级窗口,这种窗口通常拥有标题栏、边框等部件。它通常用在显示额外的窗口、对话框和其他弹出窗口上。
用法
几乎和跟窗口( Tk() 所创建)的用法是一样的。先通过Toplevel创建对象,然后通过一系列的title,geometry等方法来设置Toplevel对象(窗口)
属性
- menu, 设置Toplevel 窗口的菜单栏
- relief, 指定边框样式, 默认值是 FLAT,可以设置为 SUNKEN,RAISED,GROOVE 或 RIDGE。注意,如果要设置边框样式,记得设置 borderwidth 或 bd 选项不为 0,才能看到边框
- screen,
- takefocus, 指定该组件是否接受输入焦点(用户可以通过 tab 键将焦点转移上来), 默认值是 False
- use,
- visual, 为新窗口指定视觉信息 (labelframe)
- background, bd, bg, borderwidth, (背景色和边框宽度)
- height, width,(高和宽,单位时像素)
- class_, 默认值是 Toplevel
- container, 该选项如果为 True,意味着该窗口将被用作容器,一些其它应用程序将被嵌入 2. 默认值是 False
- colormap, 设置颜色映射
- cursor, 指定当鼠标在 Toplevel 上飘过的时候的鼠标样式
- highlightbackground,highlightcolor, highlightthickness, 设置Toplevel 没有获取/获取焦点时的样式
实例
from tkinter import *
import random
win_number = 1
def test(master=None):
screenwidth = master.winfo_screenwidth()
screenheight = master.winfo_screenheight()
def call_back():
global win_number
tp_tmp = Toplevel(master)
tp_tmp.title("No.%d Window" % win_number)
win_number += 1
size = '%dx%d+%d+%d' % (300, 100,
(screenwidth - random.randint(50, 1000)) // 2,
(screenheight - random.randint(50, 1000)) // 2 - 20)
tp_tmp.geometry(size)
color = '#%d%d%d' % (random.randint(10, 99), random.randint(10, 99), random.randint(10, 99))
Label(tp_tmp, text='Hello world', bg=color, fg='black').pack()
Button(master, text="Create New Window", bg='black', fg='red', command=call_back).pack()
def center_window(root, width, height):
screenwidth = root.winfo_screenwidth()
screenheight = root.winfo_screenheight()
size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2 - 50)
# print(size)
root.geometry(size)
if __name__ == "__main__":
root = Tk()
root.title("How To Use Top Level")
center_window(root, 300, 300)
test(root)
root.mainloop()