Also ich hab mal eine kurze Frage:
ich habe mir schon viele Tuts zum Thema wxPython angeschaut und hab es auch hinbekommen, ein Fenster (wie z.B. ein Editor) zu erstellen. Eine Liste kann ich auch erstellen.
aber in den Beispielen ist immer nur eine Sache pro Fenster dargestellt.
Ich würde gerne einen Frame machen, in dem ein Textfeld und eine Liste eingebettet sind.
Kann mir mal jemand erklären, wie man das hinbekommt?
Frame erstellen, OK! Liste erstellen, OK! Liste in Frame?!?!
Meinst du nur?Anonymous hat geschrieben:Also ich hab mal eine kurze Frage:
ich habe mir schon viele Tuts zum Thema wxPython angeschaut und hab es auch hinbekommen, ein Fenster (wie z.B. ein Editor) zu erstellen. Eine Liste kann ich auch erstellen.
aber in den Beispielen ist immer nur eine Sache pro Fenster dargestellt.
Ich würde gerne einen Frame machen, in dem ein Textfeld und eine Liste eingebettet sind.
Kann mir mal jemand erklären, wie man das hinbekommt?
(auf jeden Fall sollte man controls auf ein Panel und nicht direkt auf das Frame legen)
Code: Alles auswählen
import wx
class MyApp(wx.App):
def OnInit(self):
frame = wx.Frame(None, title="Test with TextCtrl/ListBox")
panel = wx.Panel(frame)
text = wx.TextCtrl(panel, pos=(20, 20), value="TextCtrl")
list = wx.ListBox(panel, pos=(20, 100), choices=["element1", "element2", "element3"])
frame.Show(True)
return True
app = MyApp(redirect=False)
app.MainLoop()
Traceback (most recent call last):
File "test.py", line 12, in ?
app = MyApp(redirect=False)
File "c:\wx.py", line 1957, in __init__
_wxStart(self.OnInit)
File "test.py", line 5, in OnInit
frame = wx.Frame(None, title="Test with TextCtrl/ListBox")
File "c:\frames.py", line 151, in __init__
self.this = framesc.new_wxFrame(*_args,**_kwargs)
TypeError: new_wxFrame() takes at least 3 arguments (2 given)
Welche wxPython Version verwendest du? (ab 2.6 sollte es so funktionieren).Anonymous hat geschrieben:Traceback (most recent call last):
File "test.py", line 12, in ?
app = MyApp(redirect=False)
File "c:\wx.py", line 1957, in __init__
_wxStart(self.OnInit)
File "test.py", line 5, in OnInit
frame = wx.Frame(None, title="Test with TextCtrl/ListBox")
File "c:\frames.py", line 151, in __init__
self.this = framesc.new_wxFrame(*_args,**_kwargs)
TypeError: new_wxFrame() takes at least 3 arguments (2 given)
probiere die Zeile mit wx.Frame mit:
Code: Alles auswählen
frame = wx.Frame(None, -1, title="irgendwas")
um die wxPythonVersion herauszukriegen:Anonymous hat geschrieben:hab überall ein "-1" hingemacht, dann gehts!
hab version 2.3 glaube ich
wie heisst das Verzeichnis, in das wxPython installiert wurde?
oder noch genauer:
Shellprompt oder z.B Pycrust öffnen
>>> import wx
>>> wx.VERSION_STRING
'2.6.0.0'
(für mich).
Das -1 ist der Identifier (id).
Den braucht man besonders, wenn man z.B. mehere TextCtrls hat und
mit der Bind Methode verschiedene Aktionen für die TextCtrls ausführen
möchte. Kurz gesagt, um die verschiedenen Controls zu unterscheiden.
Braucht man das nicht, braucht man bei neueren wxPy Versionen das
nicht angeben (id=-1 ist default).
Wenn möglich, updaten auf 2.6Anonymous hat geschrieben:dat sacht er bei mir
import wx
wx.VERSION_STRING
'2.4.2.4'
Es hat keinen Sinn, auf einer Version zu bleiben,
die schon so alt ist (ca. 2 Jahre).
ok, werde ich machen.
aber noch eine frage zum schluss.
hab versucht die menüleiste oben einzubauen
bekomme da diesen fehler:
aber noch eine frage zum schluss.
hab versucht die menüleiste oben einzubauen
Code: Alles auswählen
#Status-Bar erzeugen
self.CreateStatusBar()
#Dateimenu erzeugen
dateiMenu = wx.Menu()
dateiMenu.Append(ID_NEW, "&Neu"," Neues Dokument anlegen")
dateiMenu.Append(ID_OPEN, "&Datei Öffnen"," Datei öffnen")
dateiMenu.Append(ID_OPEN_DIR, "&Ordner Öffnen"," Ordner öffnen")
dateiMenu.Append(ID_SAVE, "&Speichern"," Datei speichern")
dateiMenu.Append(ID_SAVE_NEW, "&Speichern unter"," Datei speichern unter")
dateiMenu.AppendSeparator()
dateiMenu.Append(ID_PRINT, "&Drucken"," Seite drucken")
dateiMenu.Append(ID_PAGE_SETUP, "&Seite einrichten"," Seite einrichten")
dateiMenu.AppendSeparator()
dateiMenu.Append(ID_EXIT,"E&xit"," Programm schließen")
#Übermenu erzeugen
infoMenu = wx.Menu()
infoMenu.Append(ID_ABOUT,"&Über"," Informationen zum Programm")
#Bearbeitenmenu erzeugen
editMenu = wx.Menu()
editMenu.Append(ID_SEARCH, "Suchen", " Dokument durchsuchen")
editMenu.Append(ID_SEARCH_REPLACE, "Suchen & ersetzen", " suchen & ersetzen")
#Menuleiste erzeugen
menuBar = wx.MenuBar()
menuBar.Append(dateiMenu,"&Datei")
menuBar.Append(editMenu,"&Bearbeiten")
menuBar.Append(infoMenu,"Info")
#Menubar an den Frame binden
self.SetMenuBar(menuBar)
Traceback (most recent call last):
File "Application.py", line 227, in ?
app = MyApp(redirect=False)
File "c:\wx.py", line 1957, in __init__
_wxStart(self.OnInit)
File "Application.py", line 14, in OnInit
self.CreateStatusBar()
AttributeError: MyApp instance has no attribute 'CreateStatusBar'
17:06:18: Debug: e:\Projects\wx2.4\src\msw\app.cpp(439): 'UnregisterClass(canvas)' failed with error 0x00000584 (diese Klasse hat noch geöffnete Fenster.).