Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 4, 2011 23:36:31

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.Python

Разрешения еще одна проблема…
Есть модуль1 и модуль2. Оба построены на классах wx.Frame. Из модуль1 я по кнопке показываю модуль2 Show(), при этом модуль1 не закрывается, модуль1 главное окно программы.
В модуле2 две кнопки, ок и отмена. Вопрос - как мне в модуле1 понять какая кнопка была нажала в модуле2.



Офлайн

#2 Ноя. 5, 2011 06:55:02

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

wx.Python

n2b
Вопрос - как мне в модуле1 понять какая кнопка была нажала в модуле2.
Можно установить поле - результат либо в объекте типа модуль1 либо в объекте типа модуль2 как вам больше нравится :). посмотрите примеры использования диалогов в примерах wxpython



Отредактировано (Ноя. 5, 2011 06:55:46)

Офлайн

#3 Ноя. 5, 2011 09:51:38

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.Python

doza_and
Можно установить поле - результат либо в объекте типа модуль1 либо в объекте типа модуль2 как вам больше нравится . посмотрите примеры использования диалогов в примерах wxpython
Я прежде чем написать бился над этим часа два.
Поле результат получается при использовании ShowModal(). То есть, я пишу frame = module1, result = frame.ShowModal() - тогда все будет так как ты говоришь, но у wx.Frame нет ShowModal(), ShowModal() есть только у wx.Dialog, а у меня wx.Frame и у него только Show() - а он выдает только True и False и аналогичным образом через поле результат не работает почему-то.



Офлайн

#4 Ноя. 5, 2011 12:26:13

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.Python

Решил проблему переписав модуль на wx.Dialog, появилось еще пара проблем в связи с этим, но решил сам костылями… =)



Офлайн

#5 Ноя. 5, 2011 16:00:34

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

wx.Python

1 не надо костылями - обычно есть нормальные решения.
2 frame.my_special_custom_value=1 не работает?



Офлайн

#6 Ноя. 5, 2011 19:28:26

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.Python

doza_and
1 не надо костылями - обычно есть нормальные решения.
2 frame.my_special_custom_value=1 не работает?
1. Дак может это и не костыли, может по другому и нельзя сделать и то что сделал я является самым нормальным решением… :) Если я буду сюда постить каждый вопрос, который сам решил/могу решить, то это целый форум новый открывать надо.
2. У меня все переменные это выбор пользователя и на момент инициализации этих переменных ВООБЩЕ не существует, и начинают существовать только когда юзер что-то напечатает или выберет в чойсе(я так и не понял как сделать так, например, юзер напечатал в поле, чтобы это СРАЗУ попадало в переменную, а не ожидало кнопки OK или чекбокса…), поэтому изначально так не получается сделать (кстати, вот тут-то я и сделал костыль(наверно), но работает и очень правильно работает.



Отредактировано (Ноя. 5, 2011 23:49:40)

Офлайн

#7 Янв. 21, 2012 15:31:04

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.Python

Преддиплом защитил, щас проект доделываю до диплома :)

Появилась новая проблема, на этот раз уже с wx.ListCtrl:

Мой ListControl.

class Results(wx.Frame): 
def __init__(self, rows):
wx.Frame.__init__(self, None, -1,"wx.ListCtrl in wx.LC_REPORT mode")
self.list = wx.ListCtrl(self, -1, style=wx.LC_REPORT)
columns = [u'Не несущие информацию значения', u'Не соответствующие формату значения', u'Значение уровня шума',
u'Полнота данных', u'Идентифицируемость', u'Согласованность', u'Унификация', u'Оперативность',
u'Противоречивость', u'Достоверность', u'Степень классификации', u'Степень структуризации', u'Итоговый процент оценки качества данных']
for col, text in enumerate(columns):
self.list.InsertColumn(col, text)
for item in rows:
index = self.list.InsertStringItem(sys.maxint, str(item[0]))
for col, text in enumerate(item[1:]):
self.list.SetStringItem(index, col+1, text)
self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
self.list.SetColumnWidth(2, wx.LIST_AUTOSIZE)
self.list.SetColumnWidth(3, wx.LIST_AUTOSIZE_USEHEADER)
На главное окно (модуль mainW) я хочу поместить вкладку, а во вкладку уже лист контрол - как это сделать?
Помещаю обычно так (пример вкладки с гридом):
        self.SourceTab = wx.Panel(self.Tabs, -1)
self.Tabs.AddPage(self.SourceTab, 'SourceTable', -1)
mygrid=wx.grid.Grid(self.SourceTab, -1)
Как лист контрол поместить - ума не приложу… =\



Офлайн

#8 Янв. 22, 2012 03:05:10

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.Python

С этим потом разберусь. Тут новая фигня…

#module1 -- 1 из методов класса
def OnConnectBtn(self, event):
self.dsn = [self.ip, self.port, self.sid]
self.dbdata = [self.login, self.passw]
self.Close()
#module2 -- получение dbdata из модуля1
def ConnectDB(self, event):
print "connecting to db"
self.frame = connectdb.connectDB()
self.frame.Show()
AttributeError: ‘connectDB’ object has no attribute ‘dbdata’

Что за чушь? Почему так?



Отредактировано (Янв. 22, 2012 03:05:52)

Офлайн

#9 Янв. 22, 2012 07:48:33

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

wx.Python

Ну значит у объекта connectDB нет свойства или метода dbdata когда ты к нему обращаешься, смотри внимательней где объект создается и есть ли там свойство/метод перед непосредственным обращением

Офлайн

#10 Янв. 22, 2012 13:45:21

n2b
От:
Зарегистрирован: 2011-02-10
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.Python

Piton23
Ну значит у объекта connectDB нет свойства или метода dbdata когда ты к нему обращаешься, смотри внимательней где объект создается и есть ли там свойство/метод перед непосредственным обращением
100% есть метод.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version