Day21 用python写UI-聊聊PanedWindow & Notebook

PanedWindow有点像frame,但里面可以放很多子控建,Notebook就是有很多分页的感觉,可以切换页面。

♠♣今天的文章大纲♥♦

  • PanedWindow常用参数
    • 插入子控件
    • LabelFrame子物件
  • Notebook常用参数
    • 绑定控件与子控件

PanedWindow常用参数

PanedWindow是一种容器控建,里面可以放很多子控件,可以有水平跟垂直方向的排法。

参数 说明
bg或 background 当滑鼠游标不在此控件时,若是有卷轴或箭头盒时,卷轴或箭头盒的背景色彩。
bd 3D 显示时的宽度,预设是2。
borderwidth 预设是2。
cursor 当滑鼠游标在标签上方时的外形。
handlepad 预设是8。
handlesize 预设是8。
height 没有预设高度。
orient HORIZONTAL
relief 预设是relief=FLAT,可由此控制文字外框。
sashcursor 没有预设值。
sashrelief RAISED
showhandle 没有预设值。
width 没有预设值。

插入子控件

语法:PanedWindow( master, option, ... )
在PanedWindow插入子控件

import tkinter as tk

root = tk.Tk()
root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
root.geometry('300x100')

pw=tk.PanedWindow(orient='vertical')
pw.pack(expand=True,fill='both')

L1=tk.Label(pw,text='Label One',bg="#BE77FF",fg="#F1E1FF",font=("Bradley Hand",10,"bold"))
pw.add(L1)

L2=tk.Label(pw,text='Label Two',bg="#66B3FF",fg="#D2E9FF",font=("Bradley Hand",10,"bold"))
pw.add(L2)

pw.mainloop()

执行结果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20211006/20140047cIGMiz74IF.png

LabelFrame子物件

import tkinter as tk

root = tk.Tk()
root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
root.geometry('350x200')

pw=tk.PanedWindow(orient='horizontal')

lF=tk.LabelFrame(pw,text="LEFT",bg="#BE77FF",fg="#0000C6",font=("Bradley Hand",10,"bold"),
                 width=100,height=150)
pw.add(lF)

mF=tk.LabelFrame(pw,text="MIDDLE",bg="#B9B9FF",fg="#FF60AF",font=("Bradley Hand",10,"bold"),
                 width=100,height=150)
pw.add(mF)

rF=tk.LabelFrame(pw,text="RIGHT",bg="#CEFFCE",fg="#FF8F59",font=("Bradley Hand",10,"bold"),
                 width=100,height=150)
pw.add(rF)
pw.pack(fill='both',expand=True,padx=10,pady=10)

pw.mainloop()

执行结果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20211006/20140047XmxXNpUuKw.png


Notebook常用参数

参数 内容
height 预设是用最大可能高度。
padding 设定 Notebook 外围的额外空间,可以设定4个数值代表left、top、right、bottom 等4的空间。
width 预设是使用最大可能宽度。整个建立 Notebook 的框架步骤有:1.使用 Notebook( )建立 Notebook 物件,假设物件名称是 notebook。2.使用 notebook 物件呼叫 add()方法。3.上述可以将子物件插入 notebook,同时产生"xxx" 页次名称。如果用正规语法表达add()方法,它的语法如下:add(master, options)

options参数义务如下

参数 内容
compound 可以设定页次内含图像和文字时,彼此位置关系。
image 页次以影像方式呈现。
compound 可以设定页次内含图像和文字时,彼此位置关系。
image 页次以影像方式呈现。
padding 可以设定 Notebook 和面板 Pane 的额外空间。
state 可能值是"normal"、"disabled"、"hidden",如果是disabled 表示无法被取使用,如果是 hidden 表示被隐藏。
sticky 指出子视窗面板的配置方式,n/s/e/w分别代表North、South、East、West。
text 页次的字串内容。
underline 从0开始计算起的索引,指出第几个字母含底线。

绑定控件与子控件

import tkinter as tk
from tkinter import messagebox
import tkinter.ttk as ttk

root = tk.Tk()
root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
root.geometry('300x100')

def msg():
    messagebox.showinfo("Go", "gogogo")

notebook=ttk.Notebook (root)

f1= tk.Frame()
f2= tk.Frame()

l=tk.Label(f1, text="Hello") 
l.pack(padx=10, pady=10)

b=tk.Button (f2, text="Go", command=msg) 
b.pack(padx=10, pady=10)

notebook.add(f1, text="First") 
notebook.add(f2, text="Second") 
notebook.pack (padx=10, pady=10, fill='both', expand=True)

root.mainloop()

执行结果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20211006/20140047mJt9sZRmps.png
https://ithelp.ithome.com.tw/upload/images/20211006/20140047EyI9QkdFoS.png
https://ithelp.ithome.com.tw/upload/images/20211006/20140047evM90HsvO8.png


今天的内容有些有结合前面的部分,像是messagebox,如果想更深入了解可以去看其他天的喔~
/images/emoticon/emoticon05.gif


<<:  Day21 类别与物件--魔术方法construct and deconstruct

>>:  JavaScript Day 27. AJAX、Request、Response

二、教你怎麽看source code,找到核心程序码 ep.22:Deeplab的model 部署

文章说明 文章分段 文章说明 deeplab的简单介绍、於我的意义 ep.1 tensorflow的...

[Day20] Esp32用AP mode + AHT10 - (程序码讲解)

1.前言 首先,祝各位中秋佳节愉快~(明天又要继续上班上课了),不知道各位小夥伴连假期间是否在某些方...

Day26-React PropTypes & DefaultProps

在 React 中有内建的方法可以去定义传入元件的 props 资料型别,这样可以更清楚的了解传入的...

[Day 9]Request

首先利用function index来测试Request功能,在终端机上打php artisan r...

Day 08: Python额外知识小补充

Python额外知识 确认变数型别 Number = 1000 print(type(Number)...