wxGrid und Scrollbars

Plattformunabhängige GUIs mit wxWidgets.
Antworten
ivankeenlee
User
Beiträge: 6
Registriert: Freitag 7. Juli 2006, 23:17

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]
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

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 ;)
ivankeenlee
User
Beiträge: 6
Registriert: Freitag 7. Juli 2006, 23:17

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 ?
ivankeenlee
User
Beiträge: 6
Registriert: Freitag 7. Juli 2006, 23:17

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?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi ivankeenlee!

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

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
ivankeenlee
User
Beiträge: 6
Registriert: Freitag 7. Juli 2006, 23:17

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*?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten