作者tyc5116 (累人啊....)
看板Python
标题[问题] OptionMenu元件应用
时间Fri May 5 11:18:58 2017
如题,这是我最近在测试的一个范例
这个元件要能触发某个function,然後要能更新item
class MainWnd:
def __init__(self,Frame):
self.SelectName = StringVar()
self.Names = ["aa","bb"]
self.OptModuleName = OptionMenu(app,self.SelectName,*self.Names,
command=self.SelectModule)
self.OptModuleName.pack()
self.BtnUpdate = Button(app, text="Update",command=self.Update)
self.BtnUpdate.pack()
def SelectModule(self,value):
print("choose",value)
def Update(self):
print("Update Obtion Menu")
self.OptModuleName['menu'].delete(0,'end')
self.Names.clear()
self.Names = ["cc","dd"]
for Item in self.Names:
self.OptModuleName['menu'].add_command(label=Item,
command=self.SelectModule)
经过多次的修修改改,不是选了以後画面不会显示选中的item
就是会显示TypeError,指出SelectModule有少参数等等问题
我想问题应该是在红色标示的部份,但要怎麽修改呢?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.137.82.93
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1493954341.A.678.html
2F:→ s860134: 建议给个能跑的范例 05/05 22:48
6F:→ s860134: 抄他的建构子最原生XD 05/06 00:41
7F:→ tyc5116: 不行耶,有问题 NameError: name 'tk' is not defined 05/06 12:59
8F:→ tyc5116: 把import tkinter as tk拿掉,替换成tkinter._setitXXX 05/06 13:02
9F:→ tyc5116: 这样就会有错,是为什麽?? 05/06 13:02
10F:→ s860134: from tkinter import * 意思是指把整个 tkinter code 05/06 13:51
11F:→ s860134: 在你当前环境下执行一次,无底线的方法,函数都会变成 05/06 13:52
12F:→ s860134: 能够直接取用,import tkinter 才有包含 ._setit 05/06 13:53
13F:→ s860134: 你自己写个 A.py 在 B.py 用 from 和 import 试试看 05/06 13:54
15F:→ s860134: 上面是连续执行结果,可能有点误导,你可以分两次测试 05/06 14:02
16F:→ s860134: 1. _setit 在 from tkinter import * 时不会被引入 05/06 14:03
17F:→ s860134: 2. 好像没第二点惹XD 05/06 14:07
18F:→ tyc5116: 懂了,谢谢 05/06 15:28