Форум сайта python.su
Вот простой код заготовки интерфейса:
# -*- coding: cp1251 -*-
import wx
class MainWindow(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, wx.ID_ANY, title, style = wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE | wx.MAXIMIZE)
panel = wx.Panel(self)
typepribor = ['Вольтметр аналоговый', 'Вольтметр цифровой']
rb = wx.RadioBox(self, -1, 'Выбор прибора', wx.DefaultPosition, wx.DefaultSize, typepribor, 1)
# self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
namepribor = ['Вольтметр аналоговый 1', 'Вольтметр аналоговый 2', 'Вольтметр цифровой 1', 'Вольтметр цифровой 2']
cb = wx.ComboBox(self, 500, "default value", (0, 80), wx.DefaultSize, namepribor, wx.CB_DROPDOWN)
app = wx.PySimpleApp()
frame = MainWindow(None, -1, 'Интерфейс для моих программ')
frame.Show(1)
app.MainLoop()
Отредактировано (Апрель 15, 2009 11:53:40)
Офлайн
tumanovalexИзменить ассоциации файлов в настройке папки
У меня в процессе создания кода и просмотра результата появились следующие вопросы:
1. Как сделать так, чтобы при двойном щелчке на питоновском файле он грузился в IDLE? В ярлыке для IDLE я не нашел никаких команд. Сейчас у меня pythonw просто запускает файл.
tumanovalexBind связывает обработчик с событием
3. Как нужно исправить программу, чтобы self.Bind не давал ошибку. В чем особенности Bind и для чего он нужен? Если его не использовать, то какие возможности будут недоступны?
tumanovalexДля этого используются сайзеры
4. Как программно определить местоположение рядом стоящих элементов, чтобы выбрать позицию следующего элемента? В примере я подбирал положение экспериментально, думаю, есть программные способы (может быть, определение размера рядом стоящего элемента и местоположения его левой верхней точки).
tumanovalexОбработчиком на событии
5. Как сделать так, чтобы при выборе в радиобоксе кнопки “Вольтметр аналоговый” в комбобоксе появлялись бы только аналоговые вольтметры, а при выборе “Вольтметр цифровой” - цифровые?
tumanovalexпитон сам сделает, все импортируемые файлы он скомпилит
6. В wxPython2.8 Docs and Demos я нашел файлы с расширением pyc. Как я понял, это скомпилированные особым образом (но не exe) файлы, которые быстрее запускаются и в них не виден исходный код. Как из файла py сделать файл pyc?
# -*- coding: utf-8 -*-
import wx
class MainWindow(wx.Frame):
typepribor = [u'Вольтметр аналоговый', u'Вольтметр цифровой']
pribor_analog = [u'Вольтметр аналоговый 1', u'Вольтметр аналоговый 2']
pribor_digital = [u'Вольтметр цифровой 1', u'Вольтметр цифровой 2']
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, wx.ID_ANY, title, style = wx.DEFAULT_FRAME_STYLE | wx.MAXIMIZE)
rb = wx.RadioBox(self, -1, u'Выбор прибора', choices=self.typepribor)
self.cb = wx.Choice(self, -1, choices=self.pribor_analog)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(rb, 0, wx.ALL|wx.EXPAND, 5)
sizer.Add(self.cb, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.EXPAND, 5)
self.SetSizer(sizer)
sizer.Fit(self)
self.Layout()
self.Bind(wx.EVT_RADIOBOX, self.OnRadioBoxChenge, rb)
def OnRadioBoxChenge(self, evt):
if evt.GetInt():
self.cb.SetItems(self.pribor_digital)
else:
self.cb.SetItems(self.pribor_analog)
app = wx.PySimpleApp()
frame = MainWindow(None, -1, u'Интерфейс для моих программ')
frame.Show(1)
app.MainLoop()
Отредактировано (Апрель 15, 2009 13:43:58)
Офлайн
1. Изменить ассоциацию не получилось ни с помощью настроек папок, ни с помощью правого щелчка мыши и опиции “Открыть файла с помощью”. Как я уже писал, в свойствах ярлыка не указано, какой запускаемый файл вызывает Python IDLE. А как это получилось у Вас?
2. А как получить из моего основного файла файл pyc?
Отредактировано (Апрель 16, 2009 07:36:33)
Офлайн
tumanovalexНе помню :) Извините, винды под рукой нет
1. Изменить ассоциацию не получилось ни с помощью настроек папок, ни с помощью правого щелчка мыши и опиции “Открыть файла с помощью”. Как я уже писал, в свойствах ярлыка не указано, какой запускаемый файл вызывает Python IDLE. А как это получилось у Вас?
tumanovalexА зачем? Обычно питон компилит все импортируемые модули, но не трогает запускаемый. Прятать исходники таким образом смысла нет - вскрывается на раз. Но если очень хочется:
2. А как получить из моего основного файла файл pyc?
python -m compileall <путь к директории с файлами>
Офлайн
Спасибо большое за пример и подсказку по компиляции! Он меня многому научил. Хороший язык Питон, очень он мне нравится. Файл загружать в IDLE я научился. А где можно найти справку о ключах при запуске питона, например, по ключу -m? Я пробовал задавать help, но так и не понял, как получить справку по параметрам коммандной строки питона.
Офлайн
tumanovalex
Я пробовал задавать help, но так и не понял, как получить справку по параметрам коммандной строки питона.
python --help
Отредактировано (Апрель 17, 2009 06:03:35)
Офлайн
Спасибо большое, обязательно попробую.
Офлайн