2016-07-06 5 views
0

В приведенном ниже коде используется sqlalchemy для проверки таблицы сопоставления sqlite3 (Ppe) для дат. Затем он использует эти даты для заполнения поля в wxForm в событии comboBox.Как сбросить статус ALLOWNONE для wxDatePickerCtrl?

def refresh_ppe(self, event): 
     selected_user = str(self.m_comboBox31.GetValue()) 
     session = start_session() 
     updater = session.query(Ppe).filter(Ppe.name == selected_user).first() 
     new_date = updater.ear_defenders 
     try: 
      self.m_datePicker23.SetValue(_pydate2wxdate(new_date)) 
     except AssertionError: 
      self.m_datePicker23.SetValue(None) 

Image of control in question.

То, что я пытаюсь сделать, это когда я заселить таблицу с записью с Null датой Ear Defenders (потому что они не были выданы им), что он сбрасывает ALLOWNONE состояние DatePickerCtrl и очищает флажок.

Я пробовал self.m_panel1681.Refresh() (родительскую панель), а также попытался скрыть и показать панель и DatePickerCtrl.

Любая помощь была бы благосклонно получена.

Thanks Paul.

ответ

0

wxDP_ALLOWNONE - это флаг, поэтому он не должен терять его, если он явно не удален. Я предполагаю, что вы имеете в виду визуальное состояние виджета, и то, что делается для этого, зависит от нативного элемента управления и того, как он выбирает представление текущего значения. Обычным шаблоном для подобных вещей в wxWidgets является использование недопустимого объекта данного типа для представления пустого, нулевого, значения по умолчанию и т. Д. Поэтому я бы попытался использовать self.m_datePicker23.SetValue(wx.DefaultDateTime).