作者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://www.ptt.cc/bbs/Python/M.1493954341.A.678.html
→ s860134: 建議給個能跑的範例 05/05 22:48
→ s860134: 抄他的建構子最原生XD 05/06 00:41
→ tyc5116: 不行耶,有問題 NameError: name 'tk' is not defined 05/06 12:59
→ tyc5116: 把import tkinter as tk拿掉,替換成tkinter._setitXXX 05/06 13:02
→ tyc5116: 這樣就會有錯,是為什麼?? 05/06 13:02
→ s860134: from tkinter import * 意思是指把整個 tkinter code 05/06 13:51
→ s860134: 在你當前環境下執行一次,無底線的方法,函數都會變成 05/06 13:52
→ s860134: 能夠直接取用,import tkinter 才有包含 ._setit 05/06 13:53
→ s860134: 你自己寫個 A.py 在 B.py 用 from 和 import 試試看 05/06 13:54
→ s860134: 上面是連續執行結果,可能有點誤導,你可以分兩次測試 05/06 14:02
→ s860134: 1. _setit 在 from tkinter import * 時不會被引入 05/06 14:03
→ s860134: 2. 好像沒第二點惹XD 05/06 14:07
→ tyc5116: 懂了,謝謝 05/06 15:28