Hallo,
ich möchte dem Benutzer in meiner Anwendung ermöglichen, ein bestimmtes Verzeichns auszuwählen. Wie ich den entsprechenden Dialog starten kann, weiß ich (wx.DirSelector()).
Ich suche nun aber noch nach dem TextControl, dass den Dialog startet und bei dem der Benutzer sehen kann, welchen Pfad er gewählt hat.
Unter Windows ist das jenes, wo rechts ein Button "Durchsuchen" zur Verfügung steht, unter Mac ist es ein Dreieck.
Gibt es so ein TextControl gar nicht, oder suche ich nur nicht richtig?
cu
TextControl um Datei zu bestimmen
Schau mal in der Demo unter "Pickers", da findest Du solche Widgets, z.B. `FilePickerCtrl`.
Scheint doch nicht ganz so einfach zu sein
Ich benutze jetzt das wx.DirPickerCtrl
Wenn ich einen Validator daran binde, funktioniert der überhaupt nicht. Muss man da etwas spezielles beachten?
Das sieht bei mir wie folgt aus:
"Hallo" wird interessanter Weise 4 mal ausgegeben, der Rest wird ignoriert.
Ich benutze jetzt das wx.DirPickerCtrl
Wenn ich einen Validator daran binde, funktioniert der überhaupt nicht. Muss man da etwas spezielles beachten?
Das sieht bei mir wie folgt aus:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx
class pathValidator(wx.PyValidator):
def __init__(self, flag):
wx.PyValidator.__init__(self)
self.flag = flag
self.Bind(wx.EVT_CHAR, self.OnChar)
print "Hallo"
def OnChar(self, evt):
#key = chr(evt.GetKeyCode())
print self.flag
evt.Skip()
def Clone(self):
"""
Note that every validator must implement the Clone() method.
"""
return pathValidator(self.flag)
def Validate(self, win):
DirPickerCtrl = self.GetWindow()
text = DirPickerCtrl.GetTextCtrlValue()
print "Welt"
if len(text) == 0:
wx.MessageBox("This field must contain some text!", "Error")
DirPickerCtrl.SetBackgroundColour("pink")
DirPickerCtrl.SetFocus()
DirPickerCtrl.Refresh()
return False
else:
DirPickerCtrl.SetBackgroundColour(
wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))
DirPickerCtrl.Refresh()
return True
def TransferToWindow(self):
print "transfer to"
return True
def TransferFromWindow(self):
print "transfer from"
return True
class pathPanel(wx.Panel):
"""Klasse, die innerhalb eines übergeordneten wx.Notebook genutzt wird."""
def __init__(self, noteBook):
wx.Panel.__init__(self, noteBook)
self.clientTemplateDirLabel = wx.StaticText(self, -1, "Client Templates:")
self.serverTemplateDirLabel = wx.StaticText(self, -1, "Server Templates:")
self.clientTemplateDirInput = wx.DirPickerCtrl(self, message="Select the clients template directory")
self.serverTemplateDirInput = wx.DirPickerCtrl(self, message="Select the servers template directory")
self.clientTemplateDirInput.SetValidator(pathValidator(self.clientTemplateDirInput.GetTextCtrlValue))
self.serverTemplateDirInput.SetValidator(pathValidator(self.clientTemplateDirInput.GetTextCtrlValue))
...