Найти - Пользователи
Полная версия: Несколько вопросов (вопросы по элементам управления и другие)
Начало » Python для новичков » Несколько вопросов (вопросы по элементам управления и другие)
1
tumanovalex
Вот простой код заготовки интерфейса:
# -*- 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()
У меня в процессе создания кода и просмотра результата появились следующие вопросы:
1. Как сделать так, чтобы при двойном щелчке на питоновском файле он грузился в IDLE? В ярлыке для IDLE я не нашел никаких команд. Сейчас у меня pythonw просто запускает файл.
2. Как установить белый цвет надписи в радиобоксе (Выбор прибора) - по умолчанию надпись плохо видна. Может есть общий ответ на вопрос: как изменить цвет части стандартного элемента управления (например, надписи справа от радиобокса и др.).
3. Как нужно исправить программу, чтобы self.Bind не давал ошибку. В чем особенности Bind и для чего он нужен? Если его не использовать, то какие возможности будут недоступны?
4. Как программно определить местоположение рядом стоящих элементов, чтобы выбрать позицию следующего элемента? В примере я подбирал положение экспериментально, думаю, есть программные способы (может быть, определение размера рядом стоящего элемента и местоположения его левой верхней точки).
5. Как сделать так, чтобы при выборе в радиобоксе кнопки “Вольтметр аналоговый” в комбобоксе появлялись бы только аналоговые вольтметры, а при выборе “Вольтметр цифровой” - цифровые?
6. В wxPython2.8 Docs and Demos я нашел файлы с расширением pyc. Как я понял, это скомпилированные особым образом (но не exe) файлы, которые быстрее запускаются и в них не виден исходный код. Как из файла py сделать файл pyc?
7. Так я и не разобрался, как использовать ShowMeCode для размещения больших кусков кода. Я понял так, что просто разместить на их сайте кусок кода и в форум вставить ссылку на него. Так или это?
PooH
tumanovalex
У меня в процессе создания кода и просмотра результата появились следующие вопросы:
1. Как сделать так, чтобы при двойном щелчке на питоновском файле он грузился в IDLE? В ярлыке для IDLE я не нашел никаких команд. Сейчас у меня pythonw просто запускает файл.
Изменить ассоциации файлов в настройке папки
tumanovalex
3. Как нужно исправить программу, чтобы self.Bind не давал ошибку. В чем особенности 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()
tumanovalex
1. Изменить ассоциацию не получилось ни с помощью настроек папок, ни с помощью правого щелчка мыши и опиции “Открыть файла с помощью”. Как я уже писал, в свойствах ярлыка не указано, какой запускаемый файл вызывает Python IDLE. А как это получилось у Вас?
2. А как получить из моего основного файла файл pyc?
PooH
tumanovalex
1. Изменить ассоциацию не получилось ни с помощью настроек папок, ни с помощью правого щелчка мыши и опиции “Открыть файла с помощью”. Как я уже писал, в свойствах ярлыка не указано, какой запускаемый файл вызывает Python IDLE. А как это получилось у Вас?
Не помню :) Извините, винды под рукой нет
tumanovalex
2. А как получить из моего основного файла файл pyc?
А зачем? Обычно питон компилит все импортируемые модули, но не трогает запускаемый. Прятать исходники таким образом смысла нет - вскрывается на раз. Но если очень хочется:
python -m compileall <путь к директории с файлами>
tumanovalex
Спасибо большое за пример и подсказку по компиляции! Он меня многому научил. Хороший язык Питон, очень он мне нравится. Файл загружать в IDLE я научился. А где можно найти справку о ключах при запуске питона, например, по ключу -m? Я пробовал задавать help, но так и не понял, как получить справку по параметрам коммандной строки питона.
PooH
tumanovalex
Я пробовал задавать help, но так и не понял, как получить справку по параметрам коммандной строки питона.
python --help
Кстати, посмотрите wxGlade - достаточно удобный построитель интерефейсов для wxPython
tumanovalex
Спасибо большое, обязательно попробую.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB