控件之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

相关文章

Toolbar+DrawerLayout使用详情结合网络各大神

最近也想搞下toolbar+drawerlayout的使用。结合网络上各大神的杰作,我把大部分的内容效果都完成了遍。现在记录下各个功能效果的实现以及一些细节注意点。 这图弹出两个菜单内容都是仿QQ界面的选项。左边一个是drawerlayout的弹窗。右边是toolbar的popup弹窗。 开始实现步骤详情: 1.创建toolbar布局跟drawerlayout布局 <?xml vers

XMG xib中不属于一个类的控件,拖线到指定的类中

1.比如我现在有一个view绑定为GreenView,我们按住control向类里面拖线的方式想要达到目的,显然拖不进去。例图如下 那么我们此时还想要达到目的,就需要自己去GreenView的类内部去写IBo 然后这面连接起来 2.第二,大哥郝良建给做的扩展 可以在.h或者.m中写一个NSObject的属性 然后在xib中对应的位置创建一个NSObject的属性

Avalonia 常用控件二 Menu相关

1、Menu 添加代码如下 <Button HorizontalAlignment="Center" Content="Menu/菜单"><Button.Flyout><MenuFlyout><MenuItem Header="打开"/><MenuItem Header="-"/><MenuItem Header="关闭"/></MenuFlyout></Button.Flyout></B

3_创建Tab控件

1,新建MFC 对话框项目,为对话框添加Tab控件,选中Tab控件,新建控件变量m_tab_ctrl 2,为Tab控件添加tab项 m_tab_ctrl.InsertItem(0, L”000”),参数1,哪个位置;参数2,item的名称 3,为Tab控件添加监听事件, void C测试Dlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESUL

示例:推荐一个基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid,可以像Excel拥有列头筛选器

一、目的:基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid,可以像Excel拥有列头筛选器,感兴趣的可以去下方链接地址查看开源控件库地址。本控件封装的目的在于将第三方库的皮肤和样式封装到皮肤库中可统一设置样式,同时生成nuget方便调用 二、效果如下 三、环境 VS2022 Net7 四、使用方式 1、安装nuget包:H.Con

TextGroupView (TextView组合控件)

TextGroupView ImageView + TextView + TextView +TextView+ EditText +ImageView + ImageView 实现的组合控件 JitPack依赖 A.项目/build.grade allprojects {repositories {...maven { url 'https://jitpack.io' }}} B.

Android 扇形网络控件 - 无网络视图(动画)

前言 一般在APP没有网络的情况下,我们都会用一个无网络的提示图标,在提示方面为了统一app的情况,我们一般使用简单的提示图标,偶尔只需要改变一下图标的颜色就一举两得,而不需要让PS来换一次颜色。当然app有图标特殊要求的就另当别论了。 效果图 当你第一眼看到这样的图,二话不说直接让UI给你切一张图标来的快对吧,我其实开始也是这么想的,但是到了做的app越来越多的时候,你就会发现就算是用

轻量级控件SnackBar使用以及源码分析

本篇博客将会给大家带来一个轻量级控件SnackBar,为什么要讲SnackBar?Snackbar:的提出实际上是界于Toast和Dialog的中间产物。因为Toast与Dialog各有一定的不足,使用Toast的时候, 用户无法交互;使用Dialog:用户可以交互,但是体验会打折扣,会阻断用户的连贯性操作;但是使用Snackbar既可以做到轻量级的用户提醒效果,又可以有交互的功能,本博客将会从S

C#界面动态布局 界面控件随着界面大小尺寸变化而变化

要想写一个漂亮的界面,光靠利用Anchor和Dock属性是远远不够的,我们需要用到相对布局,就是不管窗口大小怎么变化,控件相对父控件的相对位置保持不变。可惜c#里没有提供按照百分比布局。所以只能自己再resize()事件里调整控件位置。 首先在窗体的构造函数里保存父窗体的长宽,以及每个控件的X,Y坐标的相对位置:  int count = this.Controls.Count * 2 + 2;

论坛开源项目推荐(12.25):菜单(Menu)

转自  http://www.cocoachina.com/applenews/devnews/2013/1225/7608.html 更多代码可到CocoaChina代码库查看:http://code.cocoachina.com/   SvpplyTable(可折叠可张开的菜单动画) 允许你简单地创建可折叠可张开的菜单动画效果,灵感来自于Svpply app。不同表格项