控件之Menu toolbar statusbar Optionmenu Menubutton

2024-06-19 03:32

本文主要是介绍控件之Menu toolbar statusbar Optionmenu Menubutton,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Tkinter 为菜单提供了 Menu 类,该类既可代表菜单条,也可代表菜单,还可代表上下文菜单(右键菜单)。
简单来说,Menu 类就可以搞定所有菜单相关内容。程序可调用 Menu 的构造方法来创建菜单,在创建菜单之后可通过如下方法添加菜单项:
add_command():添加菜单项。
add_checkbutton():添加复选框菜单项。
add_radiobutton():添加单选钮菜单项。
add_separator():添加菜单分隔条。上面的前三个方法都用于添加菜单项,因此都支持如下常用选项:
label:指定菜单项的文本。
command:指定为菜单项绑定的事件处理方法。
image:指定菜单项的图标。
compound:指定在菜单项中图标位于文字的哪个方位。有了菜单之后,接下来就是如何使用菜单了。菜单有两种用法:
在窗口上方通过菜单条管理菜单。
通过鼠标右键触发右键菜单(上下文菜单)。

 

from tkinter import *
from tkinter import messagebox
root = Tk()
root.title('Menu OptionMenu Menubutton')
root.geometry('300x200')#菜单:
menubar = Menu(root)# 创建菜单条
root['menu'] = menubar# 添加菜单条\显示filemenu = Menu(menubar, tearoff=0)# 创建菜单
menubar.add_cascade(label='文件', menu=filemenu)# 添加菜单languagemenu = Menu(menubar, tearoff=1)
menubar.add_cascade(label='选择语言', menu=languagemenu)#filenew_icon = PhotoImage(file='C:\\Users\\caojiangtao\\Desktop\\Tkinter\\5.Picture/filenew.png')
#fileopen_icon = PhotoImage(file='C:\\Users\\caojiangtao\\Desktop\\Tkinter\\5.Picture/fileopen.png')filemenu.add_command(label="新建", command=None,# 添加菜单项#image=filenew_icon,compound=LEFT)
filemenu.add_command(label="打开", command=None,#image=fileopen_icon,compound=LEFT)filemenu.add_separator()# 添加分隔条submenu = Menu(filemenu, tearoff=0)#创建子菜单
filemenu.add_cascade(label='选择性别', menu=submenu)# 添加子菜单def choosegender():messagebox.showinfo(message=('选择的性别为: %s' % genderVar.get()))# 添加子菜单项Radiobutton
genderVar = IntVar()
# enumerate()将一个可遍历的数据对象(列表、元组或字符串)组合为一个索引序列,同时列出数据下标和数据.
for num,  Im in enumerate(['男', '女', '保密']):submenu.add_radiobutton(label=Im,variable=genderVar, value=num, command=choosegender)print(num)def chooselanguage():rt_list = [e.get() for e in languageVars]messagebox.showinfo(message=('选择的语言为: %s' % ','.join(rt_list)))languageVars = [StringVar(), StringVar(), StringVar(), StringVar()]
#可参考checkbutton章节                                     # 添加菜单项checkbutton
for num, L in enumerate(('English', 'Chinese', 'French', 'Japanese')):languagemenu.add_checkbutton(label=L,variable=languageVars[num] ,onvalue=num,command=chooselanguage)
'''languageVars=[]                                            # 添加菜单项checkbutton
for num, L in enumerate(('English', 'Chinese', 'French', 'Japanese')):strVar = StringVar()languagemenu.add_checkbutton(label=L,variable=strVar ,onvalue=num,command=chooselanguage)languageVars.append(strVar)
'''
#工具栏:
def showdialog():passtoolbar= Frame(root, bg='#F7EED6',relief=RAISED)
toolbar.pack(fill=X)
frame = Frame(toolbar)
frame.pack(side=LEFT)bm = PhotoImage(file='C:/Users/caojiangtao/Desktop/3.compound.png')
Button(frame, width=20,height=10, image=bm, command=showdialog).grid(row=0, column=0, padx=1, pady=1, sticky=E)
Button(frame, width=20,height=10, image=bm, command=showdialog).grid(row=0, column=1, padx=1, pady=1, sticky=E)#OptionMenu:
def output(event):print(event.widget)print(strVar.get())strVar= StringVar()
strVar.set('OptionMenu')
om = OptionMenu(root,strVar,'打开','关闭','打印')
om.pack()
om.bind('<Button-1>', output)#MenuButton:
def callback():print("你好")mb = Menubutton(root,text='MenuButton')#创建按钮
mb.pack()#显示
#在menubutton下 创建Menu
mu = Menu(mb,tearoff=False)
#添加菜单到按钮下显示
mb['menu'] = mu#或者mb.config(menu = mu)
#添加选项
mu.add_command(label='打开', command=callback)
mu.add_command(label='退出', command=root.quit)
mu.add_command()  # 添加分割线
mu.add_radiobutton(label ='男')
mu.add_radiobutton(label ='女')#状态栏:
statusbar = Label(root, text='', bd=1, relief=SUNKEN, anchor=E)
statusbar.pack(side=BOTTOM, fill=X)def xyvalue(event):statusbar['text'] = "鼠标位置(%s %s)" % (event.x, event.y)
root.bind('<Motion>',xyvalue)root.mainloop()

 

这篇关于控件之Menu toolbar statusbar Optionmenu Menubutton的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073884

相关文章

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件

Android ToolBar+DrawerLayout的实现

实现思路: 1.关联相应的依赖包 compile ‘com.android.support:appcompat-v7:25.3.1’ 2.主布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

C# 通过拖控件移动窗体

目录 引言一、通过控件事件移动窗体1、创建窗体界面2、添加控件事件3、添加代码 二、通过windowsAPI移动窗体1、 构建窗体和添加事件2、代码展示 引言 在C#Form窗体设计中,如果我们不需要使用默认边框设计自己个性化的窗体(FromBorderStyle=none时),这时候你会发现拖动窗体的功能就没有了,这里需要自己构建方法让用户可以拖动整个窗体,这里我们使用前辈的

Qt-常用控件(3)-多元素控件、容器类控件和布局管理器

1. 多元素控件 Qt 中提供的多元素控件有: QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView xxWidget 和 xxView 之间的区别,以 QTableWidget 和 QTableView 为例. QTableView 是基于 MVC 设计的控件.QTableView 自身不持有数据,使用 QTab

ASP.NET手动触发页面验证控件事件

开发环境:.NET Framework 3.5.1 sp1 参考文章: http://www.codeproject.com/KB/aspnet/JavascriptValidation.aspx http://msdn.microsoft.com/zh-cn/library/aa479045.aspx http://www.cnblogs.com/minsentinel/archive/

兔子--计算listview的高度,解决listview与scrollview控件冲突

/** * 计算ListView的高度 * * @param listView */ public void setListViewHeightBasedOnChildren(ListView listView) { // 获取ListView对应的Adapter OrderGoodsAdapter listAdapter = (OrderGoodsAdapter) listView.getAda

QT:QWidget 控件属性的介绍

控件属性介绍 🌴enabled 状态属性🌴geometry 几何属性示例一:改变控件尺寸示例二:更变控件位置window frame 的影响 🌴windowTitle 窗口标题🌴windowIcon 窗口图标🌴 qrc机制🌴windowOpacity 窗口透明度🌴cursor 修改鼠标显示样式示例一:通过编辑区直接修鼠标显示样式示例二:通过代码的方式设置鼠标在控件的显示效果示例