Seite 1 von 1

wxGrid und Scrollbars

Verfasst: Freitag 7. Juli 2006, 23:31
von ivankeenlee
Hallo erst Mal :).

Ich habe mit wxGlade zur Übung ein Fenster "gezeichnet" mit einer Tabelle (wxGrid) drin und durch den Button füllen, konnte man die Tabelle auch füllen. War auch kein Problem, was mich aber stört sind die Scrollbalken unten und rechts, habe schon verschiedenes ausprobiert aber irgendwie bleiben die immer noch da. Kann mir da jemand ein Tipp geben ?

Hier der Code:

File: MyFrame.py

Code: Alles auswählen

# -*- coding: ISO-8859-1 -*-
# generated by wxGlade 0.4.1 on Thu Jun 01 22:58:01 2006

import wx

# begin wxGlade: dependencies
import wx.grid
# end wxGlade

myID_cmdFuellen= wx.NewId()

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.panel_1 = wx.Panel(self, -1)
        self.stat_sizer_2_staticbox = wx.StaticBox(self.panel_1, -1, "")
        self.grid_1 = wx.grid.Grid(self.panel_1, -1, size=(1, 1))
        self.cmdOk = wx.Button(self.panel_1, wx.ID_OK, "Ok")
        self.cmdFuellen = wx.Button(self.panel_1, myID_cmdFuellen, u"Füllen")

        self.__set_properties()
        self.__do_layout()

        self.Bind(wx.EVT_BUTTON, self.cmdOk_clicked, id=wx.ID_OK)
        self.Bind(wx.EVT_BUTTON, self.cndFuellen_clicked, id=myID_cmdFuellen)
        # end wxGlade
    def __set_properties(self):
        # begin wxGlade: MyFrame.__set_properties
        self.SetTitle("frame_1")
        self.grid_1.CreateGrid(10, 3)
        self.grid_1.SetMinSize((377, 211))
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: MyFrame.__do_layout
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        stat_sizer_2 = wx.StaticBoxSizer(self.stat_sizer_2_staticbox, wx.HORIZONTAL)
        sizer_2 = wx.BoxSizer(wx.VERTICAL)
        sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_2.Add(self.grid_1, 2, wx.EXPAND, 0)
        sizer_3.Add(self.cmdOk, 1, wx.ADJUST_MINSIZE, 0)
        sizer_3.Add(self.cmdFuellen, 1, wx.ADJUST_MINSIZE, 0)
        sizer_2.Add(sizer_3, 0, wx.TOP|wx.EXPAND, 20)
        stat_sizer_2.Add(sizer_2, 1, wx.EXPAND, 0)
        self.panel_1.SetAutoLayout(True)
        self.panel_1.SetSizer(stat_sizer_2)
        stat_sizer_2.Fit(self.panel_1)
        stat_sizer_2.SetSizeHints(self.panel_1)
        sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
        self.SetAutoLayout(True)
        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        sizer_1.SetSizeHints(self)
        self.Layout()
        # end wxGlade

    def cmdOk_clicked(self, event): # wxGlade: MyFrame.<event_handler>
        print "Event handler `cmdOk_clicked' not implemented!"
        event.Skip()
        self.Close()

    def cndFuellen_clicked(self, event): # wxGlade: MyFrame.<event_handler>
        print "Event handler `cndFuellen_clicked' not implemented!"
        event.Skip()
        daten=[1,2,3,4,5,6]
        i=0
        row=0
        col=0
        print "Max Row:",self.grid_1.GetNumberRows()
        print "Max Cols:",self.grid_1.GetNumberCols()
        #while row<self.grid_1.GetNumberRows():
        while  i <len(daten):
            if row>self.grid_1.GetNumberRows():
                break
            col=0
            print "row:",row
            while col< self.grid_1.GetNumberCols():
                print "col:",col
                
                self.grid_1.SetCellValue(row,col,str(daten[i]))
                i+=1
                col+=1
            row+=1
                 

# end of class MyFrame
File: grid1.py

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: ISO-8859-1 -*-
# generated by wxGlade 0.4.1 on Thu Jun 01 22:58:01 2006

import wx
from MyFrame import MyFrame

class test_grid(wx.App):
    def OnInit(self):
        wx.InitAllImageHandlers()
        frame_1 = MyFrame(None, -1, "")
        self.SetTopWindow(frame_1)
        frame_1.Show()
        return 1

# end of class test_grid

if __name__ == "__main__":
    grid1 = test_grid(0)
    grid1.MainLoop()


Ich denke die Frage ist so blöd, dass es eigentlich schon peinlich ist .... aber nützt nix .... ich komme selbst nicht weiter.
Habe auch schon die Suche benutzt und gegoogelt aber nix gefunden....

Hoffe ihr könnt mir helfen. [/code]

Verfasst: Samstag 8. Juli 2006, 11:32
von DatenMetzgerX

Code: Alles auswählen

self.grid_1 = wx.grid.Grid(self.panel_1, -1, size=(1, 1)) 
Size weglassen...

Dann war bei mir die 1. Scrollbar schon weg ;)

Verfasst: Samstag 8. Juli 2006, 12:27
von ivankeenlee
Hmmmm....

danke für deine Antwort, aber bei mir hat sich nichts geändert ....

So meintest du das doch oder ?

Code: Alles auswählen

self.grid_1 = wx.grid.Grid(self.panel_1, -1)
Oder hast du sonst noch was verändert ?

Verfasst: Samstag 8. Juli 2006, 21:30
von ivankeenlee
Hmmm ich muss mich korrigieren, die untere ist tatsächlich auf meinem Laptop weg, aber bei meinen Rechner nicht. Hmm wie kann das denn sein ?
Liegt das eventuell in der Auflösung? Naja aber irgendwie ist die rechte ja immer noch da ....
Irgendjemand eine Idee?

Verfasst: Samstag 8. Juli 2006, 21:49
von gerold
Hi ivankeenlee!

wx.grid.Grid() erbt direkt von wx.ScrolledWindow(). Die Scrollbars los zu werden, dürfte eine sehr undankbare Arbeit werden.

mfg
Gerold
:-)

Verfasst: Samstag 8. Juli 2006, 22:13
von ivankeenlee
Aber die Scrollbars stören doch total. Oder findet ihr das nicht ?
Also wenn man theoretisch keine braucht, dann sollte er auch keine anzeigen, finde ich jedenfalls :). Oder ist das schon zu viel verlangt *g*?

Verfasst: Sonntag 9. Juli 2006, 09:03
von gerold
ivankeenlee hat geschrieben:Aber die Scrollbars stören doch total. Oder findet ihr das nicht ? Also wenn man theoretisch keine braucht, dann sollte er auch keine anzeigen, finde ich jedenfalls
Hi!

Wenn das Grid kleiner als der zur Verfügung stehende Platz ist, dann wird bei mir keine Scrollbar eingeblendet. Und nein, mich stören die Scrollbars nicht. Wenn ich nur eine Tabelle anzeigen möchte, dann verwende ich das HtmlWindow.

mfg
Gerold
:-)