ich versuche gerade in eine wxPython-GUI eine Anmeldung auf einen WebDAV-Server einzubauen und habe ein Problem mit den Encodings anscheinend... ich habe ein Feld, in dem ich mein Passwort eingebe und eins für den Username. Die Funktionen sind richtig, da sie ohne GUI via Terminal funktioniert haben. Ich bekomme aber jetzt folgende Fehlermeldung:
1587 in _setSessionInformation
AttributeError: PyOnDemandOutputWindow instance has no attribute 'encoding'
die betreffenden Zeilen in jener Funktion lauten:
Code: Alles auswählen
encoding = sys.stdout.encoding or sys.getfilesystemencoding()
userName = userName.encode(encoding)
password = password.encode(encoding)
Hier noch die Klasse, mit der ich den Login baue und wie ich ihn aufrufe:
Code: Alles auswählen
class UserLogin(wx.Dialog):
def __init__(
self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
style=wx.DEFAULT_DIALOG_STYLE,
useMetal=False,
):
wx.Dialog.__init__(self,parent)
sizer = wx.BoxSizer(wx.VERTICAL)
label = wx.StaticText(self, -1, "Benutzer und Passwort fuer den WebDAV-Server:")
sizer.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
box = wx.BoxSizer(wx.HORIZONTAL)
label = wx.StaticText(self, -1, "Benutzer: ")
box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
text = wx.TextCtrl(self, -1, "", size=(80,-1), name="user")
box.Add(text, 1, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
box = wx.BoxSizer(wx.HORIZONTAL)
label = wx.StaticText(self, -1, "Passwort: ")
box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
text1 = wx.TextCtrl(self, -1, "", size=(80,-1),style=wx.TE_PASSWORD, name = "password")
box.Add(text1, 1, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(box, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
line = wx.StaticLine(self, -1, size=(20,-1), style=wx.LI_HORIZONTAL)
sizer.Add(line, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.TOP, 5)
btnsizer = wx.StdDialogButtonSizer()
btn = wx.Button(self, wx.ID_OK)
btn.SetDefault()
btnsizer.AddButton(btn)
btn = wx.Button(self, wx.ID_CANCEL, "Abbrechen")
btnsizer.AddButton(btn)
btnsizer.Realize()
sizer.Add(btnsizer, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
self.SetSizer(sizer)
sizer.Fit(self)
Code: Alles auswählen
dlg = verifyUser.UserLogin(self, -1, "Login")
dlg.CenterOnScreen()
val = dlg.ShowModal()
if val == wx.ID_OK:
print 'ok'
userName=dlg.FindWindowByName("user").GetValue()
password = dlg.FindWindowByName("password").GetValue()
collectionHandle.loginUser(userName, password)