filebrowsebutton Demo - IDLE Subprocess: no IP port passed

Plattformunabhängige GUIs mit wxWidgets.
Antworten
PeterParker
User
Beiträge: 3
Registriert: Dienstag 13. Juli 2010, 10:41

Hallo,

ich habe vor ein paar Tagen mit Python angefangen und auch schon die ersten kleinen Anwendungen geschrieben. Nun will ich eine GUI mit wxPython bauen.
Dazu habe ich mir die Demo 'filebrowsebutton' angeschaut. In der Demo funktioniert das Programm, aber wenn ich den Code in der Python shell ausführe bekomme ich die Meldung:

"IDLE Subprocess: no IP port passed in sys.argv."

Das liegt wahrscheinlich an der letzten Zeile:

Code: Alles auswählen

run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
Ich habe schon verschiedene Sachen ausprobiert. Hat leider nichts gebracht.
Ich benutze Python 2.7.
Wie kann ich den Fehler beheben? Ich fraue mich über jeden Hinweis.

Hier der Gesamtcode:

Code: Alles auswählen


""" Demonstrate filebrowsebutton module of the wxPython.lib Library.



14.1.2001 Bernhard Reiter <bernhard@intevation.de>

    Added demo for DirBrowseButton and improved overview text.

"""



import  wx

import  wx.lib.filebrowsebutton as filebrowse



#----------------------------------------------------------------------



class TestPanel(wx.Panel):

    def __init__(self, parent, ID, log):

        wx.Panel.__init__(self, parent, ID)

        self.log = log



        self.fbb = filebrowse.FileBrowseButton(

            self, -1, size=(450, -1), changeCallback = self.fbbCallback

            )



        self.fbbh = filebrowse.FileBrowseButtonWithHistory(

            self, -1, size=(450, -1),  changeCallback = self.fbbhCallback

            )

            

        self.dbb = filebrowse.DirBrowseButton(

            self, -1, size=(450, -1), changeCallback = self.dbbCallback

            )



        self.fbbh.callCallback = False

        self.fbbh.SetHistory(['You', 'can', 'put', 'some', 'filenames', 'here'], 4)



        sizer = wx.BoxSizer(wx.VERTICAL)

        sizer.Add(self.fbb, 0, wx.ALL, 5)

        sizer.Add(self.fbbh, 0, wx.ALL, 5)

        sizer.Add(self.dbb, 0, wx.ALL, 5)

        box = wx.BoxSizer()

        box.Add(sizer, 0, wx.ALL, 20)

        self.SetSizer(box)





    def fbbCallback(self, evt):

        self.log.write('FileBrowseButton: %s\n' % evt.GetString())





    def fbbhCallback(self, evt):

        if hasattr(self, 'fbbh'):

            value = evt.GetString()

            if not value:

                return

            self.log.write('FileBrowseButtonWithHistory: %s\n' % value)

            history = self.fbbh.GetHistory()

            if value not in history:

                history.append(value)

                self.fbbh.SetHistory(history)

                self.fbbh.GetHistoryControl().SetStringSelection(value)





    def dbbCallback(self, evt):

        self.log.write('DirBrowseButton: %s\n' % evt.GetString())





#----------------------------------------------------------------------



def runTest(frame, nb, log):

    win = TestPanel(nb, -1, log)

    return win





#----------------------------------------------------------------------



overview = """<html><body>

<h2>class FileBrowseButton:</h2>

<small><pre>

%s

</pre></small>



<h2>class FileBrowseButtonWithHistory(FileBrowseButton):</h2>

<small><pre>

%s

</pre></small>



<h2>class DirBrowseButton(FileBrowseButton):</h2>

<small><pre>

%s

</pre></small>



</body><</html>

""" % ( filebrowse.FileBrowseButton.__doc__,

        filebrowse.FileBrowseButtonWithHistory.__doc__ , 

        filebrowse.DirBrowseButton.__doc__

        ) 





if __name__ == '__main__':

    import sys,os

    import run

    print 'sys.argv[0]' + sys.argv[0]

    print sys.argv[1:]

    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])

    #run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
BlackJack

@PeterParker: Starte das mal nicht aus IDLE heraus.
PeterParker
User
Beiträge: 3
Registriert: Dienstag 13. Juli 2010, 10:41

@Blackjack
Danke für die Antwort.
Habe ich gemacht über Windows 7 shell gestartet. Jetzt kommt die Meldung "ImportError: No module named run".
BlackJack

@PeterParker: Das dürfte das `run`-Modul aus der wxPython-Demo sein, aber das ist ja Bestandteil des Demoprogramms -- was willst Du denn damit in Deinem Programm?
PeterParker
User
Beiträge: 3
Registriert: Dienstag 13. Juli 2010, 10:41

@BlackJack
Ich will nur die Funktion zum öffnen eines Verzeichnises nutzen.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

PeterParker, du solltest dich zuerst mit den Grundlagen von Python beschäftigen, dann erst mit wxPython.
the more they change the more they stay the same
Antworten