Tabelle in wxPython

Plattformunabhängige GUIs mit wxWidgets.
olgun
User
Beiträge: 5
Registriert: Samstag 24. Januar 2009, 15:42

Tabelle in wxPython

Beitragvon olgun » Samstag 24. Januar 2009, 15:53

Hallo erst mal zusammen,

ich schreibe grade ein Program, in dem ich ein Tabelle machen möchte.
Wenn ich in die Tabelle irgendwas eintippe soll auf der anderen Seite durch Eingabe in der Tabelle, eine Zeichnung gezeichnet werden, das ist nicht weiter schlimm, mein Problem ist es überhaupt einen editierbaren Tabelle zu machen. Habe massenhafte Quellcodes gefunden die leider nicht durchschaubar bzw. nicht verständlich sind.

Ich würde mich freuen wenn ihr mir weiter helfen könntet.

Mfg
Olgun
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Samstag 24. Januar 2009, 16:11

Schau Dir mal in der wxPython-Demo die Beispiele zu Grid an.
MfG
HWK
olgun
User
Beiträge: 5
Registriert: Samstag 24. Januar 2009, 15:42

Noch ne frage

Beitragvon olgun » Samstag 24. Januar 2009, 23:46

Vielen dank für deine hilfe,

ich habe bei den Demos dieses Grid angesehen aber ich wusste nicht was ich genau aus diesem Quellcode entnehmen soll, dass liegt glaube ich da dran das ich nocht ein Python anfänger bin.
olgun
User
Beiträge: 5
Registriert: Samstag 24. Januar 2009, 15:42

vergessen

Beitragvon olgun » Samstag 24. Januar 2009, 23:57

Was ich noch vergessen hatte zu erwähnen, ich wollte das mit listctrl_edit machen.
Ist da schon ein großer unterschied zwischen grid und listctrl_edit
BlackJack

Beitragvon BlackJack » Sonntag 25. Januar 2009, 09:05

@olgun: Dem Quelltext der Demo solltest Du entnehmen, wie so ein `Grid` im Einsatz aussieht. Gilt analog zum `ListCtrl`. Zusätzlich zur Dokumentation von `wx` und den entsprechenden Widgets.

IMHO sind Pythonkenntnisse, inklusive Objektorientierung, Voraussetzung bevor man sich an GUI-Programmierung in Python macht. Und natürlich auch die Grundlagen von wxPython bevor man in komplexere Widgets wie Listen und Tabellen einsteigt. Wie sieht's denn da aus?
olgun
User
Beiträge: 5
Registriert: Samstag 24. Januar 2009, 15:42

Programteile zusammen setzen

Beitragvon olgun » Montag 26. Januar 2009, 17:59

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import wx
wx.SetDefaultPyEncoding("iso-8859-15")
#white = (255, 255, 255)



class UmlD(wx.Frame):
     def __init__(self):
          wx.Frame.__init__(self, None, -1, 'Organigram', size=(800,550))
          self.panel = wx.Panel(self, -1)
         
          self.SetBackgroundColour("white")
         
          menubar = wx.MenuBar()
         
       
        #------------------------------------------------------------------------------------------------------------#
          file = wx.Menu()
          new = wx.MenuItem(file, 1, '&Neu')
          new.SetBitmap(wx.Bitmap('new.png'))
          file.AppendItem(new)
         
         
          offnen = wx.MenuItem(file, 2, u'&Öffnen')
          offnen.SetBitmap(wx.Bitmap('open.png'))
          file.AppendItem(offnen)
         
          speichern = wx.MenuItem(file, 3, '&Speichern')
          speichern.SetBitmap(wx.Bitmap('save.png'))
          file.AppendItem(speichern)
         
          file.AppendSeparator()
         
          quit = wx.MenuItem(file, 4, '&Beenden')
          quit.SetBitmap(wx.Bitmap('quit.png'))
          file.AppendItem(quit)
         
          self.Bind(wx.EVT_MENU, self.OnQuit, id=4)
         
        #------------------------------------------------------------------------------------------------------------#
       
          bearbeiten = wx.Menu()
          andern = wx.MenuItem(bearbeiten, 5, '&Ändern')
          #andern.SetBitmap(wx.Bitmap('edit.png'))
          bearbeiten.AppendItem(andern)
       
          erase = wx.MenuItem(file, 6, '&Löschen')
          #erase.SetBitmap(wx.Bitmap('erase.png'))
          bearbeiten.AppendItem(erase)
       
        #------------------------------------------------------------------------------------------------------------#
       
          einfugen = wx.Menu()
          klasse = wx.MenuItem(einfugen, 7, '&Neu')
          #klasse.SetBitmap(wx.Bitmap('linie.png'))
          einfugen.AppendItem(klasse)
         
         
          #------------------------------------------------------------------------------------------------------------#
       
         
         
       
          menubar.Append(file, '&Datei')
         
         
          self.SetMenuBar(menubar)
         
         
       
          self.toolbar1 = wx.ToolBar(self.panel, -1)
          self.toolbar1.AddLabelTool(1, '', wx.Bitmap('new.png'))
          self.toolbar1.AddLabelTool(2, '', wx.Bitmap('open.png'))
          self.toolbar1.AddLabelTool(3, '', wx.Bitmap('save.png'))
          self.toolbar1.AddSeparator()
         
          self.toolbar1.Realize()       

         
          self.Centre()
          self.Show(True) 
   
       
       
     def OnQuit(self, event):
          self.Close()
   
   
     
if __name__ == "__main__":
     app = wx.App()
     UmlD()
     app.MainLoop()


Das ist einfach mein Panel mit einer Toolbar.

import wx
import wx.grid as gridlib

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

class NewEnterHandlingGrid(gridlib.Grid):
    def __init__(self, parent, log):
        gridlib.Grid.__init__(self, parent, -1)
        self.log = log

        self.CreateGrid(10, 6)

       
        self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)


    def OnKeyDown(self, evt):
        if evt.GetKeyCode() != wx.WXK_RETURN:
            evt.Skip()
            return

        if evt.ControlDown():   # the edit control needs this key
            evt.Skip()
            return

        self.DisableCellEditControl()
        success = self.MoveCursorRight(evt.ShiftDown())

        if not success:
            newRow = self.GetGridCursorRow() + 1

            if newRow < self.GetTable().GetNumberRows():
                self.SetGridCursor(newRow, 0)
                self.MakeCellVisible(newRow, 0)
            else:
                # this would be a good place to add a new row if your app
                # needs to do that
                pass


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

class TestFrame(wx.Frame):
    def __init__(self, parent, log):
        wx.Frame.__init__(self, parent, -1, "Simple Grid Demo", size=(640,480))
        grid = NewEnterHandlingGrid(self, log)



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

if __name__ == '__main__':
    import sys
    app = wx.PySimpleApp()
    frame = TestFrame(None, sys.stdout)
    frame.Show(True)
    app.MainLoop()


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


Und das ist die Tabelle.

Mein Problem: Das alles unter einem panel zusammenfassen[/code]
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Dienstag 27. Januar 2009, 13:30

Einfacher wäre es wohl, es in einem Frame zu lassen. Wenn es denn aber unbedingt ein Panel sein muss, dann mit Sizern, z.B. so:

Code: Alles auswählen

class TestFrame(wx.Frame):
    def __init__(self, parent, log):
        wx.Frame.__init__(self, parent, -1, "Simple Grid Demo", size=(640,480))
        panel = wx.Panel(self, -1)
        sizer = wx.BoxSizer(wx.VERTICAL)
        grid = NewEnterHandlingGrid(panel, log)
        sizer.Add(grid, 0)
        sizer.Fit(panel)
        panel.SetSizer(sizer)
MfG
HWK
olgun
User
Beiträge: 5
Registriert: Samstag 24. Januar 2009, 15:42

Clear in einer Tabelle

Beitragvon olgun » Dienstag 27. Januar 2009, 15:28

Hi brauche wieder mal eure hilfe!

Es geht da drum, ich hab eine Tabelle und dazu habe ich mehrere buttons gemacht, eine davon ist der button clear.
Leider weiß ich nicht wie ich es hinkriege dass die list geleert wird wenn ich auf das Clear button klicke.

Ich bdeanke mich für eure hilfe im voraus

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder