Я работал некоторое время теперь, разрабатывая приложение, которые воздействуют на большие структурированные данные, сохраненные в several-gigabytes-thick-database и хорошо, Python достаточно хорош для этого. Приложение имеет клиент GUI со множеством средств управления (списки, деревья, ноутбуки, виртуальные списки и больше), и консольный сервер.
у Нас были некоторые проблемы производительности, но те были главным образом связаны больше с плохим дизайном алгоритма или ограничениями механизма базы данных (мы используем Oracle, SQL MS, MySQL и имели короткий роман с BerkeleyDB, используемым для оптимизации скорости), чем к самому Python. Как только Вы знаете, как пользоваться стандартными библиотеками (записанный в C) правильно, можно сделать код действительно быстрым.
, Поскольку другие говорят - любое вычисление интенсивный алгоритм, код, который зависит от заполнения битами, некоторая память ограничила вычисление - может быть сделан в необработанном C/C++ для сохранения ЦП/памяти (или любые другие приемы), но целое взаимодействие с пользователем, вход, обработка базы данных, обработка ошибок - все, что подает приложение, на самом деле запущенное, может быть записано в Python, и это поддержит скорость отклика и достойную общую производительность.
. Это можно сделать, воспользовавшись отправителем объекта
в обработчике событий. Большая часть этого не приходит мне в голову, поэтому я только предполагаю , что он будет компилироваться, но он должен помочь вам начать.
void AddMenuItem(string text, string action)
{
ToolStripMenuItem item = new ToolStripMenuItem();
item.Text = text;
item.Click += new EventHandler(item_Click);
item.Tag = action;
//first option, inserts at the top
//historyMenu.Items.Add(item);
//second option, should insert at the end
historyMenuItem.DropDownItems.Insert(historyMenuItem.DropDownItems.Count, item);
}
private void someHistoryMenuItem_Click(object sender, EventArgs e)
{
ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
string args = menuItem.Tag.ToString();
YourSpecialAction(args);
}
Это довольно просто. Вы можете сделать следующее:
ToolStripMenuItem menuItem
foreach (string text in collectionOfText)
{
ToolStripMenuItem foo = new ToolStripMenuItem(text);
foo.Click += new EventHandler(ClickEvent);
menuItem.DropDownItems.Add(foo);
}
Впоследствии, если событие Click не сработает (у меня была проблема, когда он не обнаружил правильный пункт меню), вы можете добавить событие «DropDownItemClicked» в menuItem. и чтобы получить текст элемента, по которому вы щелкнули, выполните:
private void DropedDownItemClickedEvent(object sender, ToolStripItemClickedEventArgs e)
{
string text = e.ClickedItem.Text;
}
Надеюсь, это поможет.
О, и не забудьте также удалить событие. Я забыл сделать это со всеми созданными мной динамическими меню и каким-то образом съел половину моей памяти. : D