Использование Python 3.x и wx Python.
Я работаю над инструментом GUI, который, вероятно, потребуется со временем расширять и обновлять, и я пытаюсь уменьшить объем работы (долгосрочный) по мере добавления функций.
У меня есть метод, которому нужна переданная ему переменная, а затем метод проверяет словарь, чтобы увидеть, с каким «идентификатором» связан этот элемент, затем использует этот идентификатор для запуска некоторой автоматизации.
job_dictionary = {
'job_name_in_english': 'id_goes_here',
'job_name_in_english': 'id_goes_here'
}
У меня очень простая настройка окна, и я заполняю файловое меню следующим текстом:
for key in job_dictionary:
newitem = wx.MenuItem(file_menu,wx.ID_NEW, text = key,kind = wx.ITEM_NORMAL)
file_menu.Append(newitem)
Затем позже я хочу привязать их к методу и передать этому методу значение «ключ», в зависимости от того, какой элемент они выбирают из меню.
Именно здесь я сталкиваюсь с некоторыми трудностями. Мне было интересно, есть ли способ связать их динамически на основе значения ключа в словаре, потому что, как только я завершу эту часть, я могу просто вызвать метод и передать ему ключ:
def job_trigger(key)
id = job_dictionary[key]
#Rest Of Code...
Надеюсь, то, что я пытаюсь сделать, имеет смысл. Я все еще новичок в создании GUI приложений, и я впервые имею дело с Файловым меню, и впервые пытаюсь реализовать что-то подобное.
Я знаю в пакетный скрипт, который я могу сделать что-то вроде этого:
set x=0
loop of some kind here(
set /A "x=x+1"
set menuItem%x%=foobar
)
, что сделает имя переменной динамическим c, и тогда я подумал, что могу связать их, когда они пишутся. Так что я думаю, что-то вроде:
x = 0
for key in dictionary
x += 1
menu_item = 'menu_item_' + x
'menu_item_' + x = wx.Menu().Append(wx.ID_FILEDLGG, key)
'menu_item_' + x.Bind(wx.EVT_MENU, self.job_trigger(key), key)
Я знаю, что это неправильный синтаксис для чего-то подобного, и я понятия не имею, будет ли это подходящим способом для обработки этого сценария, или если есть что-то еще полностью я должен пытаться.