Hallo,
mir fehlt eine Möglichkeit meine eigenen Objekte zu selektieren. Hab schon über ein Bild nachgedacht das über dem widget sitzt und das beim klicken dann gelb wird. Also so gelb/Transparent.
Noch eine Methode wäre eine Checkbox am Rand jedes Bildes. Wobei mir das nicht wirklich gefällt.
Gibt es in der GTK irgend eine forgevertigte methode oder hat jemand eine bessere idee ?
Wie Funktioniert selektieren ?
@Satzende: Das Bild und die Bildunterschrift scheinen ja in irgend einem anderen Widget zu stecken. Ich würde dessen Hintergrundfarbe ändern. Vielleicht mit ein bisschen "padding" arbeiten, damit auch ein Rahmen um das Bild herum entsteht. Welche Farbe im Farbschema des Benutzers für "selektiert" steht, wird sich sicher ermitteln lassen. Man könnte auch einfach Gelb nehmen, aber IMHO sollte man versuchen sich an das Farbschema zu halten, welches sich der Benutzer ausgesucht hat. Kann ja sein dass der auf Gelb steht und das als normale Fensterhintergrundfarbe gewählt hat. Dann sieht man eine gelbe Selektion natürlich nicht so gut.
Image und das Label ist in einer eigenen Klasse(gtk.Frame) eingebettet. Nun wollte ich einen Rand mit padding machen doch Frame hat diese Funktion nicht und kann sie auch nicht aufrufen.
Glaub das die Lösung einfach ist aber ich sehe es nicht :K
Glaub das die Lösung einfach ist aber ich sehe es nicht :K
Hallo
Zeigt uns mal das Programm zu dem Bild, dann Spiele ich mal herum.
Gruß
Andyh
Zeigt uns mal das Programm zu dem Bild, dann Spiele ich mal herum.
Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
vielleicht zur Erklärung http://www.blendpolis.de/viewtopic.php?f=16&t=36085
Code: Alles auswählen
#-*- coding: UTF-8 -*-
import pygtk
pygtk.require('2.0')
import gtk
def lis_dir(liste = ["a","b","c"]):
file = open("/home/mathias/Arbeitsfläche/DIR.html","w")
temp = "test"
for a in range(len(liste)):
temp = str(liste[a])+"<br>"
#print(temp+"|"+str(type(temp)))
file.write(temp)
file.close()
class imfra2T(gtk.Frame):
def __init__(self,txt="Das Label hier",pfad = "/home/mathias/Bilder/logo2.jpg"):
gtk.Frame.__init__(self)
#self.vb = gtk.VBox()
self.tab = gtk.Table(3,3)
self.ima = gtk.Image()
self.labe = gtk.Label(txt)
self.add(self.tab)
#scalieren
self.pixbuf = gtk.gdk.pixbuf_new_from_file(pfad)
self.scaled_buf = self.pixbuf.scale_simple(50,50,gtk.gdk.INTERP_BILINEAR)
self.ima.set_from_pixbuf(self.scaled_buf)
self.tab.attach(self.ima,1,2,0,1)
self.tab.attach(self.labe,0,3,1,2)
def cc(self):
self.color = gtk.gdk.color_parser('#234fdb')
self.modify_bg(gtk.STATE_NORMAL,self.color)
class dia_hinzu(gtk.Dialog):#Dialog Menu (Main-> Hinzufügen)
def comcon(self,widget,data=None):
pass
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))
self.set_default_size(150,150)
self.cfb = gtk.FileChooserButton("Name")
self.pfad = gtk.Entry()
self.cb = gtk.combo_box_new_text()
self.ima = gtk.Image()
self.tab = gtk.Table(3,3)
self.ali = gtk.Alignment(1,0,0,0)
self.ima.set_from_file("/home/mathias/Bilder/logo2.jpg")
self.tab.attach(self.ima,0,1,0,2,False,False)
self.tab.attach(self.cb,1,2,0,1,False,False)
self.tab.attach(self.pfad,1,2,1,2,False,False)
self.tab.attach(self.cfb,2,3,1,2,False,False)
self.tab.set_col_spacings(15)
self.tab.set_border_width(10)
self.cb.append_text("tester")
self.cb.append_text("nummer2")
self.cb.set_active(0)
self.cb.connect('changed',self.comcon)
#könte noch etwas aligmnt mit entry
self.set_size_request(440,180)
self.set_border_width(10)
self.vbox.pack_start(self.tab)
#self.dia.vbox.pack_start(gtk.Label('This is just a Test'))
def rundialog(self):
self.show_all()
result = self.run()
self.hide()
return result
class menu(gtk.MenuBar):
parrent = None
def __init__(self,parr = None):
if parr != None:
parrent = parr
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")
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)
def dia(self,data):
#print(data)
self.di = dia_hinzu()
res = self.di.rundialog()
print(res)
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.connect("delete_event", self.event_delete)
self.window.connect("destroy", self.destroy)
self.vb = gtk.VBox()
self.menuBar = menu(self.window)
self.menuBar.show_all()
self.vb.pack_start(self.menuBar,False,False,0)
self.lay = gtk.Layout(None,None)
self.lay.set_size(600,600)
self.hsb = self.lay.get_hadjustment()
self.lay.show()
self.vb.pack_start(self.lay,True,True,0)
#IMage class
self.inf = imfra2T()
self.inf.show_all()
self.lay.put(self.inf,20,20)
#scrollbat
self.hScrollbar = gtk.HScrollbar(None)
self.hScrollbar.set_adjustment(self.hsb)
self.hScrollbar.show()
self.vb.pack_start(self.hScrollbar,False,False,0)
self.vb.show()
self.window.add(self.vb)
self.window.show()
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()
Hallo
Nein habe dich nicht vergessen, nur sehr wenig Zeit.
Aber mal so neben bei, könntes du nicht einfach ein gtk.IconView nehmen?
Gruß
Andy
Nein habe dich nicht vergessen, nur sehr wenig Zeit.
Aber mal so neben bei, könntes du nicht einfach ein gtk.IconView nehmen?
Gruß
Andy
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
@Andyh
Sory das wollte nicht gequengelt. Wenn ein gkt.Frame auf das "Clicked " Signal reagieren würde wäre der Rest ein Kinderspiel.
Zum iconView , eigentlich perfekt nur ordnet der nur vertikal an und ich brauche eben beides.
Edit:
hier habe ich ein Beispiel gefunden welches zeigt das IconView doch geeignet ist. Nun hab ich alle GTK Selection Mode Constants aber mehr als ein Objekt kann ich nie selektieren
Edit:Edit: Hat sich erledigt . Man kann schon Mehr selektieren dann halt aber wie in einem Ordner Fenster. Hab immer eines nach dem anderen angeklickt, was nicht funktionieren kann. Srg gedrückt halten und schon geht alles .
Sory das wollte nicht gequengelt. Wenn ein gkt.Frame auf das "Clicked " Signal reagieren würde wäre der Rest ein Kinderspiel.
Zum iconView , eigentlich perfekt nur ordnet der nur vertikal an und ich brauche eben beides.
Edit:
hier habe ich ein Beispiel gefunden welches zeigt das IconView doch geeignet ist. Nun hab ich alle GTK Selection Mode Constants aber mehr als ein Objekt kann ich nie selektieren
Edit:Edit: Hat sich erledigt . Man kann schon Mehr selektieren dann halt aber wie in einem Ordner Fenster. Hab immer eines nach dem anderen angeklickt, was nicht funktionieren kann. Srg gedrückt halten und schon geht alles .