Day23 用python写UI-聊聊Menu

第一次压线发文耶,今天真的有点忙,到现在才发文。Menu就是功能表的表单,通常都会在介面的最上面,是很常见的工具喔~

♠♣今天的文章大纲♥♦

  • Menu基本参数
  • 建立menu
  • 建立下拉式menu
  • 分隔线
  • 建立popup menu

Menu基本参数

语法:Menu(master,options.…)

参数 内容
activebackground 当滑鼠移置此功能表清单时的背景色彩。
activeborderwidth 当被滑鼠选取时它的外框厚度,预设是1。
bd 所有功能表清单的外框厚度,预设是1。
bg 功能表清单未被选取时的背景色彩。
cursor 当功能表分离时,滑鼠在清单的外观。
disabledforeground 功能表清单是 DISABLED 时的颜色。
font 功能表清单文字的字型。
fg 功能表清单未被选取时的前景色彩。
image 功能表的图示。
tearoff 功能表上方的分隔线,这是一个虚线线,有分隔线时 tearoff 等於 True或 1,此时功能表清单从1位置开始放置,同时可以让功能表分离,分离方式是开启功能表後按一下分隔线。如果将 tearoff 设为False 或 0 时,此时不会显示分隔线,也就是功能表无法分离,但是功能表清单将从0位置开始存放。
add_cascade() 建立阶层式功能表,同时让此子功能清单与父功能表建立连结。
add_command() 增加功能表清单。
add_separator() 增加功能表清单的分隔线

建立menu

import tkinter as tk
from tkinter import messagebox

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

mb=tk.Menu(root)
mb.add_command(label='Add')
mb.add_command(label='Save')
mb.add_command(label='Run')
mb.add_command(label='Help')

root.config(menu=mb)

root.mainloop()

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


建立下拉式menu

import tkinter as tk

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

filemenu=tk.Menu(root)
root.config(menu=filemenu)
mb1=tk.Menu(filemenu)
mb2=tk.Menu(filemenu)

mb1.add_command(label='Add')
mb1.add_command(label='Save')
mb2.add_command(label='Run')
mb2.add_command(label='Help')

filemenu.add_cascade(label='File',menu=mb1)
filemenu.add_cascade(label='Edit',menu=mb2)

root.mainloop()

执行结果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20211008/20140047tyvzzJTKKK.png
https://ithelp.ithome.com.tw/upload/images/20211008/20140047x7qqhjiCMP.png


分隔线

mb1.add_command(label='Add')
mb1.add_separator()
mb1.add_command(label='Save')
mb2.add_command(label='Run')
mb2.add_separator()
mb2.add_command(label='Help')

执行结果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20211008/201400471UBirtp0Q2.png
https://ithelp.ithome.com.tw/upload/images/20211008/20140047w67xsZw3at.png


建立popup menu

import tkinter as tk
from tkinter import messagebox

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

def Tool():
    root.iconify()
def popupmenu(event):
    pm.post(event.x_root,event.y_root)

pm=tk.Menu(root,tearoff=False)
pm.add_command(label='Tool',command=Tool)
pm.add_command(label='Exit',command=root.destroy)

root.bind("<Button-3>",popupmenu)

root.mainloop()

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


其实Menu就是很常见的东西啦,会需要跟其他控见做和才能发挥它最大的功效,所以不只要会这个工具,也要能融合前面所学的才行~
/images/emoticon/emoticon35.gif


<<:  [DAY 25] _STM32 看门狗简介_独立看门狗(1)

>>:  Day23. 发动魔法卡,融合 - Composite (上)

伸缩自如的Flask [day3] Factory mode

首先,我们一样可以来谈谈为什麽需要使用工厂模式。 过去,你使用了flask_mail这个套件来写寄信...

Day 0x9 UVa272 TEX Quotes

Virtual Judge ZeroJudge 题意 \TeX/ \LaTeX/ 输入一字串,重新...

SDN-Defense #Paper

Piggybacking Network Functions on SDN Reactive Rou...

Material UI in React [Day4] Theme (自订主题 Palette & Typography)

继昨天 ThemeProvider 的部分今天来讲解一下 Material UI 的 Theme,大...

Day10 SwiftUI 03 - SwiftUI 数据流

SwiftUI 数据流 SwiftUI 作为一个声明式的 UI 框架,帮我们处理了几乎所有关於 介面...