Seite 1 von 1

Frame - Split, nur wie?

Verfasst: Donnerstag 20. Oktober 2005, 14:04
von Gast
hi,
denke mal da thema beschreibt mein problem - fang grad an bisschen wxpython zu testen.
und google + diverse foren konnten nicht wirklich helfen.
so habe leider nur nen java ansatz davon hab ich bischen ahnung ...
und zwar muss es doch was simples geben wie ich nen frame splitte!?
in java wäre es borderlayout "west" und z.b. borderlayout "east" um ein frame 50/50 aufzuteilen.

für jegliche hilfe wäre ich sehr dankbar

mfg

Verfasst: Donnerstag 20. Oktober 2005, 14:16
von ProgChild
Das machst du am besten mit Sizern. Schau mal im wxWiki nach. Unter "Getting Started" im Bereich "7.1.1 Laying out Visual Elements" gibt es ein Tutorial.

Verfasst: Donnerstag 20. Oktober 2005, 14:17
von CM
Hoi

Für diesen Zweck gibt es Sizer. Ich schlage vor, Du schaust Dir einmal die Demo an - dann bist Du schlauer.

Gruß,
Christian

Verfasst: Donnerstag 20. Oktober 2005, 14:45
von Gast
ok danke,
dann mach ich mich mal da dran ....

hmm jetzt blick ich nix mehr

Verfasst: Donnerstag 20. Oktober 2005, 15:16
von Gast
tja hab da wohl was falsch verstanden ...

so vorher ohne sizer hat der texteditor gefuntzt aber jetzt nur tracebacks mit fehlern
kann mir einer auf die sprünge heelfen???

Code: Alles auswählen

from wxPython.wx import *

ID_OPEN_DAT = 100
ID_SAVE_DAT = 101
ID_INFO = 102
ID_EXIT  = 103


#Mainframe
class MyFrame(wxFrame):  
    def __init__(self, parent, ID, title):
        wxFrame.__init__(self, parent, ID, title,
                         wxDefaultPosition, wxSize(500, 400))
        self.CreateStatusBar()
        self.SetStatusText("Statusanzeige")
        
        self.editor = wxTextCtrl(self, -1, "", wxTE_MULTILINE);
        self.panel = wxPanel(self, -1, "")
        
        self.sizer=wxBoxSizer(wxVERTICAL)
        self.sizer.Add(self.editor,0,wxEXPAND)
        self.sizer.Add(self.panel,0,wxEXPAND)
        
        menu = wxMenu()
        menu.Append(ID_OPEN_DAT, "Datei öffnen", "Öffnet angegebene Datei")
        menu.Append(ID_SAVE_DAT, "Datei speichern", "Speichert geöffnete Datei")
        menu.Append(ID_INFO, "Info", "Programm - Infos")  
        menu.AppendSeparator()
        menu.Append(ID_EXIT, "Beenden", "Beendet die Anwendung")

        menuBar = wxMenuBar()
        menuBar.Append(menu, "Menü");

        self.SetMenuBar(menuBar)
        
        #Layout sizers
        self.SetSizer(self.sizer)
        self.SetAutoLayout(1)
        self.sizer.Fit(self)
        
   
class MyApp(wxApp):
    def OnInit(self):
        frame = MyFrame(Null, -1, "wxPython - test")
        frame.Show(true)
        self.SetTopWindow(frame)
        return true

app = MyApp(0)
app.MainLoop()
nun noch die fehler ausgabe:
Traceback (most recent call last):
File "test.py", line 88, in ?
app = MyApp(0)
File "/usr/lib/python2.3/site-packages/wx-2.6-gtk2-ansi/wx/_core.py", line 7473, in __init__
self._BootstrapApp()
File "/usr/lib/python2.3/site-packages/wx-2.6-gtk2-ansi/wx/_core.py", line 7125, in _BootstrapApp
return _core_.PyApp__BootstrapApp(*args, **kwargs)
File "test.py", line 83, in OnInit
frame = MyFrame(Null, -1, "wxPython - test")
NameError: global name 'Null' is not defined


sry für den riesen post aber weiss nich wie sonst ...

mfg

Re: hmm jetzt blick ich nix mehr

Verfasst: Donnerstag 20. Oktober 2005, 16:30
von Francesco
Is eh kein so Riesenpost :wink:

Zuerst: welche wxPython Version hast du?
Seit 2.5 sollte man nur mehr den "neuen" Namespace verwenden.
"Null" gibt es nicht mehr; stattdessen None.

Habe dein Programm leicht abgeändert:

Code: Alles auswählen

import wx
# -*- encoding: latin-1 -*- 
ID_OPEN_DAT = 100
ID_SAVE_DAT = 101
ID_INFO = 102
ID_EXIT  = 103


#Mainframe
class MyFrame(wx.Frame): 
    def __init__(self, parent, ID, title):
        wx.Frame.__init__(self, parent, ID, title,
                         wx.DefaultPosition, wx.Size(500, 400))
        self.CreateStatusBar()
        self.SetStatusText("Statusanzeige")
       
        self.editor = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE);
        self.panel = wx.Panel(self, -1)
       
        self.sizer=wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.editor,0,wx.EXPAND)
        self.sizer.Add(self.panel,0,wx.EXPAND)
       
        menu = wx.Menu()
        menu.Append(ID_OPEN_DAT, "Datei öffnen", "Öffnet angegebene Datei")
        menu.Append(ID_SAVE_DAT, "Datei speichern", "Speichert geöffnete Datei")
        menu.Append(ID_INFO, "Info", "Programm - Infos") 
        menu.AppendSeparator()
        menu.Append(ID_EXIT, "Beenden", "Beendet die Anwendung")

        menuBar = wx.MenuBar()
        menuBar.Append(menu, "Menü");

        self.SetMenuBar(menuBar)
       
        #Layout sizers
        self.SetSizer(self.sizer)
        self.SetAutoLayout(1)
        self.sizer.Fit(self)
       
   
class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, "wxPython - test")
        frame.Show(True)
        self.SetTopWindow(frame)
        return True

app = MyApp(0)
app.MainLoop() 

Verfasst: Freitag 21. Oktober 2005, 09:08
von Gast
hi, erstmal mal many thx too u

so da NULL bei mir gefuntzt hat und latin 1 encoding nicht unterstützt wird bin ich wahrscheinlich nicht uptodate. leider liegt python aufm server und ich hab keine su rechte um die version zu checken ... also werd ich mich mal an einen der admins wenden und ggf. wxpy updaten ...

trotzdem vielen dank

p.s.: mein code war auch irgendwie immer ohne wx.blabla (wxblabla) ... ist schon nervig sich 3 tage mit zeug rumzuschlagen ohne wirklich ergebnisse zu erzielen, vllt bleib ich doch bei java auch wenn das hier in der firma keiner hernimmt