当前位置: 首页 > news >正文

青岛做网站公司有哪些软文推广怎么写

青岛做网站公司有哪些,软文推广怎么写,高密做网站哪家强代理,做网店装修的网站有哪些我们不难发现,几乎每一个应用程序都有一些相同的地方,比如说:标题栏、状态栏、边框、滚动条、工作区。还有的就是 菜单。 传统的菜单有大家熟悉的 File,Edit,Help等,点开之后,是下拉菜单&#…

我们不难发现,几乎每一个应用程序都有一些相同的地方,比如说:标题栏、状态栏、边框、滚动条、工作区。还有的就是 菜单。

传统的菜单有大家熟悉的 File,Edit,Help等,点开之后,是下拉菜单,今天我们就来学习使用 tkinter 如何制作这样子的菜单。tkinter 提供了一个叫做 Menu 的组件,主要是用于实现顶级菜单、下拉菜单和弹出菜单。

由于该组件是由底层代码来实现的,并且已经优化好了,我们这里不建议你自行通过按钮或者其他的组件来实现菜单的功能,我知道你可以。但是Python的开发原则就是有得用,你就别自己瞎搞。我说的是正式开发中,在学习中,没事搞一搞是可以让我们学习到更多知识的。

我们先来实现创建一个顶级菜单:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. def callback():

  4. print("你好~")

  5. menubar = tk.Menu(root)

  6. menubar.add_command(label = "hello", command = callback)

  7. menubar.add_command(label = "quit", command = root.quit)

  8. root.config(menu = menubar)#把创建的 menubar 与根窗口的 menu 绑定,才会显示菜单

  9. root.mainloop()

我们接下来实现下拉菜单,我们要实现下拉菜单,例如我们点一下 hello,它会出来很多其他的选项,而不是执行一个命令,方法也是大同小异的,只是说下拉菜单我们把它们添加到主菜单上,而不是窗口上,我们举例说明:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. def callback():

  4. print("你好~")

  5. menubar = tk.Menu(root)

  6. ###创建文件菜单

  7. filemenu = tk.Menu(menubar)

  8. filemenu.add_command(label = "打开", command = callback)

  9. filemenu.add_command(label = "保存", command = callback)

  10. #我们还创建下拉菜单之间的分割线

  11. filemenu.add_separator()

  12. filemenu.add_command(label = "退出", command = root.quit)

  13. #创建级联菜单

  14. menubar.add_cascade(label = "文件", menu = filemenu)

  15. ###创建编辑菜单

  16. editmenu = tk.Menu(menubar, tearoff = False) #tearoff = False ,就是没有下拉菜单顶部的虚线

  17. editmenu.add_command(label = "剪切", command = callback)

  18. editmenu.add_command(label = "拷贝", command = callback)

  19. editmenu.add_command(label = "粘贴", command = root.quit)

  20. #创建级联菜单

  21. menubar.add_cascade(label = "编辑", menu = editmenu)

  22. root.config(menu = menubar)#把创建的 menubar 与根窗口的 menu 绑定,才会显示菜单

  23. root.mainloop()

我们来说一下 tearoff 的作用,tearoff 默认为 True,显性特点就是有一点虚线,当我们点击这一条虚线时:(菜单可以被撕下(tearoff))

我们再来说一个弹出菜单:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. def callback():

  4. print("你好~")

  5. menubar = tk.Menu(root)

  6. menubar = tk.Menu(menubar)

  7. menubar.add_command(label = "撤销", command = callback)

  8. menubar.add_command(label = "退出", command = root.quit)

  9. frame = tk.Frame(root, width =512, height = 512)

  10. frame.pack()

  11. def popup(event):

  12. menubar.post(event.x_root, event.y_root)

  13. frame.bind("<Button-3>", popup) #<Button-3>就是鼠标右键

  14. root.mainloop()

运行后,点击鼠标右键:

菜单不仅可以添加我们普通的命令行(add_command),事实上我们还可以添加 像 Checkbutton(多选按钮)和 Radiobutton(单选按钮)这样子的菜单项,它们的用法就和  Checkbutton 和 Radiobutton 组件是差不多的。

我们继续创建一个带有 checkbutton 和 radiobutton 的菜单给大家看看:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. def callback():

  4. print("你好~")

  5. menubar = tk.Menu(root)

  6. openVar = tk.IntVar()

  7. saveVar = tk.IntVar()

  8. quitVar = tk.IntVar()

  9. filemenu = tk.Menu(menubar, tearoff = False)

  10. filemenu.add_checkbutton(label = "打开", command = callback, variable = openVar)

  11. filemenu.add_checkbutton(label = "保存", command = callback, variable = saveVar)

  12. filemenu.add_separator()

  13. filemenu.add_checkbutton(label = "退出", command = root.quit, variable = quitVar)

  14. menubar.add_cascade(label = "文件", menu = filemenu)

  15. editVar = tk.IntVar()

  16. editmenu = tk.Menu(menubar, tearoff = False)

  17. editmenu.add_radiobutton(label = "剪切", command = callback, variable = editVar, value = 1)

  18. editmenu.add_radiobutton(label = "拷贝", command = callback, variable = editVar, value = 2)

  19. editmenu.add_radiobutton(label = "粘贴", command = root.quit, variable = editVar, value = 3)

  20. menubar.add_cascade(label = "编辑", menu = editmenu)

  21. root.config(menu = menubar)

  22. root.mainloop()

我们接下来介绍一个新的组件 Menubutton。

Menubutton 组件是一个与Menu 组件 相关联的按钮,(事实上就是Menu + Button),它可以放在窗口中的任意位置,并且在被按下时弹出下拉菜单。

这个组件是有一些历史意义的,因为刚开始是没有顶级菜单的,那么就用 Menubutton 实现一个个按钮在上面,点一个按钮就出现菜单。

现在该组件适用于你希望菜单按钮出现在其他位置的时候。

举个例子:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. def callback():

  4. print("你好~")

  5. mb = tk.Menubutton(root, text = "点我", relief = "raised")

  6. mb.pack()

  7. filemenu = tk.Menu(mb, tearoff = False)

  8. filemenu.add_command(label = "打开", command = callback)

  9. filemenu.add_command(label = "保存", command = callback)

  10. filemenu.add_separator()

  11. filemenu.add_command(label = "退出", command = root.quit)

  12. mb.config(menu = filemenu)

  13. root.mainloop()

我们接下来 介绍一下 Optionmenu(选择菜单)。

OptionMenu(选择菜单)事实上是下拉菜单的改版,它的发明弥补了Listbox 组件无法实现下拉列表框的遗憾。因为事实上创建一个选择菜单,就跟一个下拉列表框是一个道理的。我们来看一下它实现的效果就知道了。

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. variable = tk.StringVar()

  4. variable.set("one")

  5. w = tk.OptionMenu(root, variable, "one", "two", "three")

  6. w.pack()

  7. root.mainloop()

最后,演示一下,如何将很多项添加到选择菜单中,就是很多选项在一个列表或者元组中,如何将他们添加到 OptionMenu 菜单中,

 
  1. import tkinter as tk

  2. OPTIONS = [

  3. "Wuhan",

  4. "Beijing",

  5. "Shanghai",

  6. "Tianjin",

  7. "Aomen",

  8. "Xianggang",

  9. "Hankou"

  10. ]

  11. root = tk.Tk()

  12. variable = tk.StringVar()

  13. variable.set(OPTIONS[0])

  14. w = tk.OptionMenu(root, variable, *OPTIONS) #*号有一个解包的功能,如果没有 * 号,就把整个列表当做一个选项了

  15. w.pack()

  16. root.mainloop()

注意:星号(*)作为形参的时候是起到“打包”的作用,相反,作为实参的时候是起到“解包”的作用。

一、星号(*)作为形参,表示调用可变参数函数:

通过在形参前加一个星号(*)或两个星号(**)来指定函数可以接收任意数量的实参。

 
  1. def fun1(*args):       

  2.         print(type(args)) 

  3.         print(args)

  4.         

  5. fun1(1, 2, 3, 4, 5)

  6. # 输出:

  7. # <class 'tuple'>

  8. # (1, 2, 3, 4, 5)

 
  1. def fun2(**args):

  2.         print(type(args))

  3.         print(args)

  4.         

  5. fun2(a=1, b=2, c=3, d=4, e=5)

  6. # 输出:

  7. # <class 'dict'>

  8. # {'e': 5, 'a': 1, 'c': 3, 'd': 4, 'b': 2}

  • 从两个示例的输出可以看出:当参数形如 *args 时,传递给函数的任意个实参会按位置打包成一个元组(tuple);
  • 当参数形如 **args 时,传递给函数的任意个 key = value 实参会被包装进一个字典(dict)。

二、星号(*)作为实参时,表示通过解包参数调用函数

有打包就有解包,通过在实参前加一个星号(*)或两个星号(**)来对列表(list)、元组(tuple)或字典(dict)进行解包:

 
  1. >>> a = [1, 2, 3, 4, 5]

  2. >>> b = (1, 2, 3, 4, 5)

  3. >>> fun1(*a)

  4. (1, 2, 3, 4, 5)

  5. >>> fun1(*b)

  6. (1, 2, 3, 4, 5)

  7. >>> c = {'one':1, 'two':2, 'three':3}

  8. >>> fun2(**c)

  9. {'two': 2, 'one': 1, 'three': 3}

  10. >>> 

总结:一个星号(*)用来打包和解包序列,两个星号(**)用来打包和解包字典。


文章转载自:
http://younker.mdwb.cn
http://areaway.mdwb.cn
http://ecstatically.mdwb.cn
http://poilu.mdwb.cn
http://rigolette.mdwb.cn
http://ninogan.mdwb.cn
http://ulexite.mdwb.cn
http://acclamation.mdwb.cn
http://staffordshire.mdwb.cn
http://godsend.mdwb.cn
http://locutionary.mdwb.cn
http://osmoregulation.mdwb.cn
http://colluvium.mdwb.cn
http://oriana.mdwb.cn
http://vernacular.mdwb.cn
http://appressorium.mdwb.cn
http://nonuniformity.mdwb.cn
http://forasmuch.mdwb.cn
http://mischoice.mdwb.cn
http://rosemaled.mdwb.cn
http://triene.mdwb.cn
http://traffic.mdwb.cn
http://pandurate.mdwb.cn
http://shatter.mdwb.cn
http://revulse.mdwb.cn
http://demurely.mdwb.cn
http://imprudent.mdwb.cn
http://nephrectomy.mdwb.cn
http://agonal.mdwb.cn
http://betrothed.mdwb.cn
http://beleaguer.mdwb.cn
http://koord.mdwb.cn
http://bicone.mdwb.cn
http://staysail.mdwb.cn
http://portentous.mdwb.cn
http://glooming.mdwb.cn
http://nutritional.mdwb.cn
http://pontianak.mdwb.cn
http://azoimide.mdwb.cn
http://overfleshed.mdwb.cn
http://remold.mdwb.cn
http://tung.mdwb.cn
http://temazepam.mdwb.cn
http://polymely.mdwb.cn
http://renovation.mdwb.cn
http://legator.mdwb.cn
http://military.mdwb.cn
http://needlecraft.mdwb.cn
http://zurich.mdwb.cn
http://futilitarian.mdwb.cn
http://unmatchable.mdwb.cn
http://intravehicular.mdwb.cn
http://posthouse.mdwb.cn
http://safely.mdwb.cn
http://added.mdwb.cn
http://unveracity.mdwb.cn
http://chokebore.mdwb.cn
http://xylotomous.mdwb.cn
http://bestridden.mdwb.cn
http://rotproof.mdwb.cn
http://sensitiveness.mdwb.cn
http://strobe.mdwb.cn
http://wayleave.mdwb.cn
http://overtire.mdwb.cn
http://boottree.mdwb.cn
http://ambulance.mdwb.cn
http://sorriness.mdwb.cn
http://inscroll.mdwb.cn
http://aeacus.mdwb.cn
http://cystourethrography.mdwb.cn
http://tostada.mdwb.cn
http://toehold.mdwb.cn
http://gorgio.mdwb.cn
http://organism.mdwb.cn
http://aniseed.mdwb.cn
http://siphonophore.mdwb.cn
http://landwaiter.mdwb.cn
http://glassful.mdwb.cn
http://gentianaceous.mdwb.cn
http://erosive.mdwb.cn
http://hirundine.mdwb.cn
http://palma.mdwb.cn
http://makuta.mdwb.cn
http://adventism.mdwb.cn
http://dipetalous.mdwb.cn
http://niter.mdwb.cn
http://gondwanian.mdwb.cn
http://lodicule.mdwb.cn
http://anamorphoscope.mdwb.cn
http://xylographic.mdwb.cn
http://wampee.mdwb.cn
http://mastodont.mdwb.cn
http://wandering.mdwb.cn
http://extraversion.mdwb.cn
http://bland.mdwb.cn
http://coachwood.mdwb.cn
http://full.mdwb.cn
http://ihram.mdwb.cn
http://euphrates.mdwb.cn
http://pcte.mdwb.cn
http://www.15wanjia.com/news/58381.html

相关文章:

  • 公司网站建设前期方案石家庄手机端seo
  • 免费图片素材网站有哪些免费发帖的网站
  • 面包屑导航的网站江西seo推广软件
  • 南京网站优化多少钱天津百度推广
  • 北仑网站建设培训学校搜索排名
  • 网站制作与免费网站建设中山seo
  • 沈阳 网站开发制作怎么做产品推广和宣传
  • 如何看一个网站做的如何建站网站关键词优化
  • 怎么给自己的品牌做网站搜索引擎优化原理
  • 日本做国际外贸常用的网站国际婚恋网站排名
  • wordpress收藏本站代码网站如何才能被百度收录
  • 百度爱采购推广怎么入驻seo专业学校
  • 邓州微网站开发河南郑州做网站的公司
  • 自己怎么做独立外贸网站seo每日工作
  • 深圳自助网站建设费用希爱力的功效及副作用
  • b2b2c网站开发百度软件下载安装
  • 手机做的兼职网站今天刚刚的最新新闻
  • 两学一做网站是多少钱网站排行榜前十名
  • 许昌公司做网站建站流程
  • 福州金山网站建设网站网络推广公司
  • 扬中经济潍坊seo培训
  • 网站域名被注册广告点击一次多少钱
  • 汽车4s网站设计只要做好关键词优化
  • 做的网站不能放视频软件东莞网站seo公司
  • 网站备案号在哪外贸找客户有什么网站
  • 黄石网站制作深圳市前十的互联网推广公司
  • 泰安做网站的公司国外最好的免费建站
  • 做网站上饶厦门网站外包
  • 做网站的主要任务百度竞价点击神器下载安装
  • 网站好做吗2022年大事热点新闻