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
Tabelle in wxPython
@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?
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?
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()
#---------------------------------------------------------------------------
Mein Problem: Das alles unter einem panel zusammenfassen[/code]
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:MfG
HWK
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)
HWK
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
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