资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

menu函数python menu函数是什么

为什么MENU函数无效

首先要确定你的onCreateOptionsMenu()方法和onOptionsItemselected()方式是重写父类的

公司主营业务:网站制作、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出金坛免费做网站回馈大家。

如果你的菜单按钮没有执行内容,那么你点击的时候会默认自动关掉。如果按钮里的代码出现了问题,当你在点击的时候,就会出弹出框,告诉你程序已停止,代码出现异常。想查看异常信息,可以到eclipse切换窗口到DDMS--LogCat里查看异常信息

深入浅出这本书比较简单,只是讲了一个小例子。想深入学习的话,推荐你去看创新办公室的视频,将的比较透彻。你去百度搜搜他们的网址。我忘记了

python Tkinter库之OptionMenu控件问题

'''Tkinter教程之OptionMenu篇'''

#OptionMenu为可选菜单,与Combox功能类似。

'''1.创建OptionMenu'''

# -*- coding: cp936 -*-

from Tkinter import *

root = Tk()

v = StringVar(root)

v.set('Python')

om = OptionMenu(root,v,'Python','PHP','CPP','C','Java','JavaScript','VBScript')

om.pack()

root.mainloop()

#显示的文本自动断行,上下行分别使用了左对齐,右对齐和居中对齐

# -*- coding: cp936 -*-

from Tkinter import *

root = Tk()

v = StringVar(root)

#创建一个OptionMenu控件

om = OptionMenu(root,

v,

'Python',

'PHP',

'CPP',

'C',

'Java',

'JavaScript',

'VBScript'

)

om.pack()

root.mainloop()

#OptionMenu的创建需要两个必要的参数,与当前值绑定的变量,通常为一StringVar类型;另一

#个是提供可选的内容列表,由OptionMenu的变参数指定。

'''2.设置OptionMenu的显示值'''

#当OptionMenu与变量绑定后,直接使用变量赋值的方法即可改变当前的值

# -*- coding: cp936 -*-

from Tkinter import *

root = Tk()

v = StringVar(root)

v.set('VBScript')

#创建一个OptionMenu控件

om = OptionMenu(root,

v,

'Python',

'PHP',

'CPP',

'C',

'Java',

'JavaScript',

'VBScript'

)

om.pack()

print v.get()

root.mainloop()

#运行程序,OptionMenu默认值为"VBScript",打印出的数值也为"VBScript"

#如果设置的值不包含在当前的列表中,会是什么结果?如下的代码使用"Tkinter"来测试

# -*- coding: cp936 -*-

from Tkinter import *

root = Tk()

v = StringVar(root)

v.set('Tkinter')

#创建一个OptionMenu控件

om = OptionMenu(root,

v,

'Python',

'PHP',

'CPP',

'C',

'Java',

'JavaScript',

'VBScript'

)

om.pack()

print v.get()

root.mainloop()

#程序依旧是默认值改变为Tkinter,打印结果也变为Tkinter,但Tkinter不会添加到OptionMenu的列表中,也就是说,当选择其它的选项时,Tkinter的值会丢失。

'''3.打印OptionMenu的值'''

# -*- coding: cp936 -*-

from Tkinter import *

root = Tk()

v = StringVar(root)

v.set('Tkinter')

def printOption(event):

print v.get()

#创建一个OptionMenu控件

om = OptionMenu(root,

v,

'Python',

'PHP',

'CPP',

'C',

'Java',

'JavaScript',

'VBScript'

)

om.bind('Button-1',printOption)

om.pack()

root.mainloop()

#每次点击OptionMenu程序打印出上次选中的项值

'''使用list作为OptionMenu的选项'''

# -*- coding: cp936 -*-

from Tkinter import *

root = Tk()

Lang = ['Python','PHP','CPP','C','Java','JavaScript','VBScript']

v = StringVar(root)

v.set('Tkinter')

def printOption(event):

print v.get()

#创建一个OptionMenu控件,使用了apply函数

om = apply(OptionMenu,(root,v) + tuple(Lang))

om.bind('Button-1',printOption)

om.pack()

root.mainloop() =================================================================='''Tkinter教程之Grid篇'''

# Tkinter参考中最推荐使用的一个布局器。实现机制是将Widget逻辑上分割成表格,在指定的位置放置想要的Widget就可以了。

'''1.第一个Grid例子'''

# -*- coding: cp936 -*-

# 使用grid来布局组件

from Tkinter import *

root = Tk()

# 创建两个Label

lb1 = Label(root,text = 'Hello')

lb2 = Label(root,text = 'Grid')

lb1.grid()

lb2.grid()

root.mainloop()

# grid有两个最为重要的参数,用来指定将组件放置到什么位置,一个是row,另一个是column。如果不指定row,会将组件放置到第一个可用的行上,如果不指定column,则使用第一列。

'''2.使用row和column来指定位置'''

# -*- coding: cp936 -*-

# 使用grid来布局组件

from Tkinter import *

root = Tk()

# 创建两个Label

lb1 = Label(root,text = 'Hello')

lb2 = Label(root,text = 'Grid')

lb1.grid()

# 指定lb2为第一行(使用索引0开始),第二列(使用索引0开始)

lb2.grid(row = 0,column = 1)

root.mainloop()

# grid有两个最为重要的参数,用来指定将组件放置到什么位置,一个是row,另一个是column。如果不指定row,会将组件放置到第一个可用的行上,如果不指定column,则使用第一列。注意这里使用grid时不需要创建,直接使用行列就可以。

'''3.为其它组件预定位置'''

# 可以使用row/column来指定组件的放置位置,并预先留出空间,以务其它需要。

# -*- coding: cp936 -*-

# 使用grid来布局组件

from Tkinter import *

root = Tk()

# 创建两个Label

Label(root,text = 'Hello').pack()

# 在第一行,第10列放置lb2

Label(root,text = 'Grid').grid(row = 0,column = 10)

# Lable(root,text = '3').grid(row = 0,column = 5)

root.mainloop()

# 这个例子中将lb2放置到第1行,第11列位置上,但运行结果与上一例从效果上看不出太大的区别。原因是:如果这个位置没有组件的话,它是看不可见的。

'''4.将组件放置到预定位置上去'''

# -*- coding: cp936 -*-

# 使用grid来布局组件

from Tkinter import *

root = Tk()

# 创建两个Label

Label(root,text = '1').grid()

# 在第1行,第11列放置lb2

Label(root,text = '2').grid(row = 0,column = 10)

Label(root,text = '3').grid(row = 0,column = 5)

root.mainloop()

# 可以看到Label('3')是位置Label('1')和Label('2')之间了,即Label('2')是在11列,Label('3')位于第3列

'''5.将两个或多个组件同一个位置'''

# -*- coding: cp936 -*-

# 多个组件同时grid到同一个表格位置

from Tkinter import *

root = Tk()

# 创建两个Label

lb1 = Label(root,text = '1')

lb2 = Label(root,text = '2')

# 将lb1和lb2均grid到(0,0)位置

lb1.grid(row = 0,column = 0)

lb2.grid(row = 0,column = 0)

def forgetLabel():

# grid_slaves返回grid中(0,0)位置的所有组件

# grid_forget将这个组件从grid中移除(并未删除,可以使用grid再将它显示出来)

print root.grid_slaves(0,0)[0].grid_forget()

# 我测试时grid_salves返回的第一个值为lb2,最后grid的那一个

Button(root,text = 'forget last',command = forgetLabel).grid(row = 1)

root.mainloop()

# 这段代码是用来证明,多个组件同时放置到同一个位置上会产生覆盖的问题。对于grid_slaves返回的组件list如何排序,我没有去查想着资料,在这个例子中使用索引0,返回的正好是lb2,然后再使用grid_forget将这个删除从grid中移除,可以看到lb1显示出来了。

'''6.改变列(行)的属性值'''

# -*- coding: cp936 -*-

# 设置column的属性(columnconfigure)

from Tkinter import *

root = Tk()

# 创建两个Label

lb1 = Label(root,text = '1',bg = 'red')

lb2 = Label(root,text = '2',bg = 'blue')

# 将lb1和lb2分别放置到第1行的1,2列位置上

lb1.grid(row = 0,column = 0)

lb2.grid(row = 0,column = 1)

# 指定列的最小宽度为100

root.columnconfigure(0,minsize = 100)

root.mainloop()

# 1与2的距离变的远一些了。

# 但如果这个位置没有组件存在的话这个值是不起作用的.

# 设置列或行(rowconfigure)的属性时使用父容器的方法,不是自己调用。

'''7.组件使用多列(多行)'''

# -*- coding: cp936 -*-

# 使用多行(多列)

from Tkinter import *

root = Tk()

# 创建如下布局(一个字符占用一个grid位置)

# A E

# B C

# D

# A占用(0,0)(0,1),B占用(1,0),C占用(1,1),D占用(2,0),E占用(0,2)

# 创建5个Label,分别以背景色区别

lbA = Label(root,text = 'A',bg = 'red')

lbB = Label(root,text = 'B',bg = 'blue')

lbC = Label(root,text = 'C',bg = 'red')

lbD = Label(root,text = 'D',bg = 'blue')

lbE = Label(root,text = 'E',bg = 'blue')

# 以下为布局参数设置

lbA.grid(row = 0,column = 0,columnspan = 2)

lbB.grid(row = 1,column = 0)

lbC.grid(row = 1,column = 1)

lbD.grid(row = 2)

lbE.grid(row = 0,column = 2)

root.mainloop()

# A与B、D的区别,它左边已改变,由于使用了两个表格;

# C与E的区别:C的右边与E的左边对齐,也就是说E被放置到第2列的下一个位置了,原因由于A已使用了第2列。

'''8.设置表格中组件的对齐属性'''

# -*- coding: cp936 -*-

# 使用sticky设置对齐方式

from Tkinter import *

root = Tk()

# 创建两个Label

Label(root,text = 'hello sticky').grid()

Label(root,text = 'Tkinter').grid()

# 创建两个Label,并指定sticky属性

Label(root,text = 'hello sticky').grid(sticky = W)

Label(root,text = 'Tkinter').grid(sticky = W)

root.mainloop()

# 默认属性下,组件的对齐方式为居中,设置sticky属性可以控制对齐方式,可用的值(N,S,E,W)及其组合值

'menu' : redefinition; different type modifiers

函数 void menu(void){ ...} 定义出现在 main(){} 函数以后,语法规定,在 main() 以前 必须 有 函数原型声明,而你没有写。

于是 主函数里 出现 的 menu();编译器 认为 是 函数原型声明。 按语法,略写 函数类型的 则处理 为整型,没有形参的 处理为 void. 这就 出现 了 说 你 重复定义了 menu() 函数,且 类型 改变 了 (前一个是整型,后一个是 void 型)。

所以,你只要在 main() 以前,加上 函数原型声明 void menu(void); 编译器就不会 误解了。

Python:Attribute Error: 'Window' object has no attribute 'root'

你好,你的self.root是在init函数里面才定义的class本身没有root这个成员,你可以将self.root那行删除。

然后在class windows里面增加一个对root的定义

root = tkinter.Tk()

用python写一个 点餐代码--急急急 !!! 希望高人帮忙!

# coding: utf-8

menu = {

'1': dict(name='草莓冰淇淋', price=20),

'2': dict(name='香草冰淇淋', price=10),

'3': dict(name='香蕉冰淇淋', price=15),

'5': dict(name='巧克力冰淇淋', price=30),

}

def showmenu(menu):

for k, item in sorted(menu.items()):

print "%(key)s: %(name)s 价格%(price).2f" % dict(key=k, **item)

def menuchoice(menu):

while True:

showmenu(menu)

c = raw_input("Your Choice('.' for end): ")

if c == '.':

break

else:

yield menu.get(c)

customerchoice = filter(None, menuchoice(menu))

print "Total: %.2f" % sum(map(lambda x: x["price"], customerchoice))


本文名称:menu函数python menu函数是什么
分享URL:http://cdkjz.cn/article/hhgoed.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220