2016-07-06 16 views
0

Der folgende Code verwendet sqlalchemy, um eine Tabelle sqlite3 mapped (Ppe) auf Daten zu überprüfen. Es verwendet dann diese Daten, um ein Feld auf einem WxForm für ein Ereignis ComboBox zu füllen.Wie setze ich den ALLOWNONE-Status einer wxDatePickerCtrl zurück?

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.

Was ich versuche zu tun ist, wenn ich die Tabelle mit einem Eintrag mit einem Null-Datum für die Ohrenschützer repopulate (weil sie nicht sie ausgestellt worden ist), dass sie die ALLOWNONE zurücksetzt Status der DatePickerCtrl und löscht das Kontrollkästchen.

Ich habe versucht, self.m_panel1681.Refresh() (das übergeordnete Panel) und auch versucht zu verstecken und zeigt das Panel und die DatePickerCtrl.

Jede Hilfe wäre sehr gut erhalten.

Danke Paul.

Antwort

0

Die wxDP_ALLOWNONE ist ein Flag, so dass es nicht verlieren sollte, wenn es nicht explizit entfernt wird. Ich nehme an, dass Sie den visuellen Zustand des Widgets meinen und was dafür getan wird, hängt vom nativen Steuerelement ab und davon, wie es den aktuellen Wert darstellt. Das übliche Muster für solche Dinge in wxWidgets besteht darin, ein ungültiges Objekt des gegebenen Typs zu verwenden, um Leer, Null, Standard usw. darzustellen. Also würde ich versuchen, self.m_datePicker23.SetValue(wx.DefaultDateTime) zu verwenden.