Wie komme ich nun an ScrollWindow ran ?

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Satzende
User
Beiträge: 70
Registriert: Samstag 8. Januar 2011, 12:41

http://satzende.deviantart.com/art/TempWindow-268621864


Hallo

In meiner Main klasse deklariere/definiert ich alle Dinge die man auf dem Bild sehen kann aber.
Ein Menu Eintrag Ruft einen Dialog auf dessen Antwort dann in einer CallBack Funktion verarbeitet wird.
Nun soll in der CallBack funktion, werte an Scrollwindow gereicht werden.

Wie komme ich nun an ScrollWindow ran ?
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

Hallo,

was hält dich denn davon ab, dein ScrolledWindow an einen Namen zu binden? Konkrete Hilfe gibt es bei konkretem Code :)

lG

brb
Satzende
User
Beiträge: 70
Registriert: Samstag 8. Januar 2011, 12:41

Die 2 module hänge ich auf Wunsch auch noch an. Die stelle ist in der klasse 2Menu" in der methode "dia"
Das Problem ist das ich die instand von LayMen brauche die in der main klasse deklariert wurde


Code: Alles auswählen

#-*- coding: UTF-8 -*-

import pygtk
pygtk.require('2.0')
import gtk, os ,XmlMen, LayMan



class dia_hinzu(gtk.Dialog):#Dialog Menu (Main-> Hinzufügen)Vbox Hbox

    _imagePfad_ = "/home/mathias/Bilder/logo3.jpg"


    def __init__(self):
        gtk.Dialog.__init__(self,"Hinzufügen", self,gtk.DIALOG_MODAL  | gtk.DIALOG_DESTROY_WITH_PARENT,(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK))
        #declaration
        self.index = {"Dif_Col":None,"Geo_War":None,"Spe_Col":None}#Pfad index
        self.fcb  = gtk.FileChooserButton("fcb")
        self.fil  = gtk.FileFilter()
        self.name_entry  = gtk.Entry(15)
        self.cb   = gtk.combo_box_new_text()
        self.ima  = gtk.Image()
        self.lab  = gtk.Label("Chanel : ")
        self.lab2 = gtk.Label("Material-Name: ")
        self.lab3 = gtk.Label("/ ")#parent -> sw
        self.lab4 = gtk.Label("Pfad:")
        self.sw   = gtk.ScrolledWindow()
        self.hb   = gtk.HBox()
        self.hb2  = gtk.HBox()
        self.vb   = gtk.VBox()
        self.vb2  = gtk.VBox()

        #ima = Image Edit
        pix = gtk.gdk.pixbuf_new_from_file(self._imagePfad_)
        self.ima.set_from_pixbuf(pix.scale_simple(125,111,gtk.gdk.INTERP_BILINEAR))

        #name_entry = entry edit #name_entrye
        self.name_entry.set_size_request(80,25)

        #cb = comboBox Edit
        self.cb.append_text("Dif_Col")
        self.cb.append_text("Geo_War")
        self.cb.append_text("Spe_Col")
        self.cb.set_active(0)
        self.cb.connect('changed',self.comcon)

        #fcb = FileCooseButton
        self.fcb.connect("file-set",self.labpfad)
        self.fcb.set_current_folder("/")
        self.fcb.add_filter(self.fil)
        self.fcb.set_size_request(30,30)

        #fil = imagefilter
        self.fil.set_name("Images")
        self.fil.add_mime_type("image/png")
        self.fil.add_mime_type("image/jpeg")
        self.fil.add_mime_type("image/gif")

        #sw = scrolledWindow
        self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
        self.sw.add_with_viewport(self.lab3)
        self.sw.set_size_request(200,20)


        #hb = HBox
        self.hb.pack_start(self.ima)
        self.hb.pack_start(self.vb)
        self.hb.pack_start(self.vb2)

        #vb = VBox
        self.vb.pack_start(self.lab2,False,False)
        self.vb.pack_start(self.lab,False,False)
        self.vb.pack_start(self.lab4,False,False)
        self.vb.set_spacing(35)
        self.vb.set_size_request(140,0)

        #blfra = gtk.frame# Blinde
        self.blfra =gtk.Frame()
        self.blfra.set_shadow_type(gtk.SHADOW_NONE)

        #vb2 = VBox
        self.vb2.pack_start(self.name_entry,False,False)
        self.vb2.pack_start(self.cb,False,False)
        self.vb2.pack_start(self.hb2,False,False)
        self.vb2.pack_start(self.blfra)
        self.vb2.set_spacing(21)

        #hb2 = HBox
        self.hb2.pack_start(self.sw,False,False)
        self.hb2.pack_start(self.fcb,False,False)

        #self propertys
        self.set_border_width(10)
        self.vbox.pack_start(self.hb)


    def comcon(self,widget,data=None):#manage den inhalt der dropDown liste    
        model = widget.get_model()
        activ = widget.get_active()
        if self.index[model[activ][0]] == None:
            self.lab3.set_text("/ ")
            pix = gtk.gdk.pixbuf_new_from_file(self._imagePfad_)
            self.ima.set_from_pixbuf(pix.scale_simple(125,111,gtk.gdk.INTERP_BILINEAR))
        else:
            self.lab3.set_text(self.index[model[activ][0]])
            pix = gtk.gdk.pixbuf_new_from_file(self.index[model[activ][0]])
            self.ima.set_from_pixbuf(pix.scale_simple(125,111,gtk.gdk.INTERP_BILINEAR))


    def labpfad(self,widget,data= None):#callback FileChooseButton -> Label
        #FileChooseButton übergibt daten an (PfadLabel) & self.image
        temp = widget.get_filename()#_entrye
        if os.path.isfile(temp):
            model = self.cb.get_model()
            activ = self.cb.get_active()
            self.index[model[activ][0]] = temp
            self.lab3.set_text(temp)
            pix = gtk.gdk.pixbuf_new_from_file(temp)
            self.ima.set_from_pixbuf(pix.scale_simple(125,111,gtk.gdk.INTERP_BILINEAR))
        else:
            print("Error : \""+temp+"\" ist keine korrekte angabe")


    def rundialog(self):
        self.show_all()
        result = self.run()
        self.hide()

        if result == -5:
            if self.name_entry.get_text_length() > 0 and self.index["Dif_Col"] != None:
                dic = {}
                dic.update(self.index)
                dic.update({"MatNam":self.name_entry.get_text()})             
                return dic
                
            else:
                print("Name lenge : "+str(self.name_entry.get_text_length())+"\nColor Pfad : "+str(self.index["Dif_Col"]))
                return None


class menu(gtk.MenuBar):

    #_parrent = None

    def __init__(self):
        gtk.MenuBar.__init__(self)
      

        gtk.MenuBar.__init__(self)
        self.menu = gtk.Menu()
        self.menui = gtk.MenuItem("Hinzufügen")
        self.menui.connect("activate",self.dia)
        self.menu.append(self.menui)
        self.menui = gtk.MenuItem("Bearbeiten")
        self.menu.append(self.menui)
        self.menui = gtk.MenuItem("Delete")#zweckentfremdet
        self.menui.connect("activate",self.atri)
        self.menu.append(self.menui)
        self.menui = gtk.MenuItem("Exit")
        self.menui.connect("activate",lambda w: gtk.main_quit())
        self.menu.append(self.menui)
        self.mainMenu = gtk.MenuItem("Main")
        self.mainMenu.set_submenu(self.menu)
        self.append(self.mainMenu)
        self.set_size_request(50,40)
        

        
    #Dummy
    def atri(self,wid,data=None):       
        print("Parrent " +str(self.get_parent()))

    def dia(self,data):
        di = dia_hinzu()
        temp  = di.rundialog()
        
        if temp != None:
            #self.material = temp            
            xml     = XmlMen.XmlMen()
            ausage  = xml.add_mater(temp)
            
            if ausage == None:
                lm = LayMan.LayMan()# Hier ist der Wurm
                
                
            else:
                #ausage in eine statusbar
                pass
        else:
                #ausage in eine statusbar
                pass
            

class myW(object):

    def __init__(self):
        self.window = gtk.Window()
        self.window.set_title("Der Titel")
        self.window.set_size_request(300,300)
        self.window.set_position(gtk.WIN_POS_CENTER)
        self.window.connect("delete_event", self.event_delete)
        self.window.connect("destroy", self.destroy)

        self.vb = gtk.VBox()
        self.menuBar = menu()
        self.vb.pack_start(self.menuBar,False,False,0)
        layout = LayMan.LayMan()
        xm = XmlMen.XmlMen()
        self.vb.pack_start(layout)
        layout.new_load(xm.getMater2LayMen())
        self.window.add(self.vb)
        self.window.show_all()

    def event_delete(self, widget, event, data=None):
        return False

    def destroy(self, data=None):
        gtk.main_quit()

    def main(self):
        gtk.main()


i = myW()
i.main()
Antworten