IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ Discussion :

[Ruby] Fixer la taille d'un treeview


Sujet :

GTK+

  1. #1
    Membre actif
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 267
    Points
    267
    Par défaut [Ruby] Fixer la taille d'un treeview
    Bonjour

    Je débute en ruby. J'ai eu quelques exercices à faire en mode console. Mais j'ai décidé en parallèle de les refaire ne mode graphique avec GTK pour apprendre GTK.

    Mon exercice consiste à entrer 10 notes et à faire la moyenne de ces notes.

    En Graphique j'ai pour l'instant representer ça de la maniere suivante :

    Une hbox que j'ai appelé hb_partie_haute contient 3 autres hbox.

    -La HBox note contient un label label_note qui contient simplement le texte" notes " et un entry qui permet de saisir une note.
    _La deuxieme hbox que j'ai appelé hb_button contient simplement un bouton.
    -La Troisieme hbox que j'ai appelé hb_liste contient un treeview d'une colonne qui est alimente par la note entre dans l'entry ,lorsque j'appuie sur le bouton.

    Tout ça fonctionne sans probleme. Ma treeview s'alimente correctement. Le probleme c'est qu'au départ elle est toute petite et s'agrandit au fur et à mesure que je rentre les notes. Ce qui deformes toute la fenetre. Je voudrais savoir s'il est possible de fixer la taille de la treeview en hauteur pour qu'elle ne s'agrandisse pas(je choisirais une taille assez grande pour contenir 10 note et je limiterai par la suite le nombre d'ajout possible).

    Voici le code. je suis desolé je débute c'est un peu brouillon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    require 'gtk2'
     
    i=0
     
    window = Gtk::Window.new()
     
    window.set_default_size(100,100)
     
    vb= Gtk::VBox.new(false,6)
     
    button=Gtk::Button.new('->')
     
    note=Gtk::Entry.new
     
     note.set_width_chars(5)
     
    label_note=Gtk::Label.new('notes')
     
     
    hb_partie_haute = Gtk::HBox.new(false,6)
     
     
     
    hb_note = Gtk::HBox.new(false,6)
    hb_note.pack_start(label_note,false,false,6)
    hb_note.pack_start(note,false,false,6)
     
    hb_button = Gtk::HBox.new(false,6)
    hb_button.pack_start(button,false,false,6)
     
     
     
     
    treestore = Gtk::TreeStore.new(String, String, Integer)
     
    button.signal_connect('clicked'){
     
    i=i+1
    parent = treestore.append(nil)
    parent[0]=note.text
    }
     
     
    view = Gtk::TreeView.new(treestore)
    view.selection.mode = Gtk::SELECTION_NONE
     
    # Create a renderer
    renderer = Gtk::CellRendererText.new
     
    col = Gtk::TreeViewColumn.new("notes", renderer,:text=>0)
    view.append_column(col)
     
    hb_liste = Gtk::HBox.new(false,6)
    hb_liste.pack_start(view,false,false,6)
     
    hb_partie_haute.pack_start(hb_note)
    hb_partie_haute.pack_start(hb_button)
    hb_partie_haute.pack_start(hb_liste)
     
     
    vb.pack_start(hb_partie_haute)
     
    window.signal_connect("delete_event") { Gtk.main_quit; exit! }
    window.add(vb)
    window.show_all
     
    Gtk.main
    merci d'avance

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 552
    Points : 1 058
    Points
    1 058
    Par défaut
    Tu pourrais utiliser une "scrolledwindow."


    Reagarde aussi la documentation sur " les widget" et sur les "containers" qui sont 2 classes parentes de "treeview".

    PS: à quoi sert la deuxieme hbox qui ne contient qu'un seul widget?
    ZiK un lecteur audio et son blog.

  3. #3
    Membre actif
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Points : 267
    Points
    267
    Par défaut
    Merci beaucoup ça marche.

    Mais j'ai un autre probleme. J'ai decidé d'enlever le bouton c'est inutile. J'ai decidé qu'une note sera ajouté quand j'appuie sur la touche entré j'ai donc rajouté ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    accel=Gtk::AccelGroup.new
    accel.connect(Gdk::Keyval::GDK_Return, Gdk::Window::CONTROL_MASK,Gtk::ACCEL_VISIBLE){
     
    i=i+1
    parent = treestore.append(nil)
    parent[0]=note.text
    note.text=""
     
     
     
     
    }
     
    window.add_accel_group(accel)

    ça marche si je fais ctrl + entré mais pas entré. Faut dire je comprend pas trop la doc non plus. Apparemebnt on peut utiliser le numero hardware de la touche mais je vois pas comment faire. J'ai essayé de remplacé Return par 13 ça marche pas.

    Je remets le code du prog entier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    require 'gtk2'
     
    i=0
     
    window = Gtk::Window.new()
     
    window.set_default_size(100,100)
     
    vb= Gtk::VBox.new(false,6)
     
     
     
     
    note=Gtk::Entry.new
     
     note.set_width_chars(5)
     
    label_note=Gtk::Label.new('notes')
     
     
    hb_partie_haute = Gtk::HBox.new(false,6)
     
     
     
    hb_note = Gtk::HBox.new(false,6)
    hb_note.pack_start(label_note,false,false,6)
    hb_note.pack_start(note,false,false,6)
     
     
    treestore = Gtk::TreeStore.new(String, String, Integer)
     
    accel=Gtk::AccelGroup.new
    accel.connect(Gdk::Keyval::GDK_Return ,Gdk::Window::CONTROL_MASK,Gtk::ACCEL_VISIBLE){
     
    i=i+1
    parent = treestore.append(nil)
    parent[0]=note.text
    note.text=""
     
     
     
     
    }
     
    window.add_accel_group(accel)
    view = Gtk::TreeView.new(treestore)
    view.selection.mode = Gtk::SELECTION_NONE
    view.set_size_request(40,200)
     
    # Create a renderer
    renderer = Gtk::CellRendererText.new
     
    col = Gtk::TreeViewColumn.new("notes", renderer,:text=>0)
    view.append_column(col)
     
    hb_liste = Gtk::HBox.new(false,6)
    hb_liste.pack_start(view,false,false,6)
     
    hb_partie_haute.pack_start(hb_note)
    hb_partie_haute.pack_start(hb_liste)
     
     
    vb.pack_start(hb_partie_haute)
     
    window.signal_connect("delete_event") { Gtk.main_quit; exit! }
    window.add(vb)
    window.show_all
     
    Gtk.main

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 552
    Points : 1 058
    Points
    1 058
    Par défaut
    accel.connect(Gdk::Keyval::GDK_Return, Gdk::Window::CONTROL_MASK,Gtk::ACCEL_VISIBLE)
    Tu utilises la touche entrée (Gdk::Keyval::GDK_Return) associé à un masque contrôle (Gdk::Window::CONTROL_MASK) donc le racourcci est : Ctrl+entrée.

    Je ne me rapelle plus si il faut utiliser nil ou si une constante est définie pour n'utiliser aucun masque. A vérifier.
    ZiK un lecteur audio et son blog.

Discussions similaires

  1. Fixer la taille d'une fenêtre
    Par rockelite dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 24/12/2005, 13h09
  2. [Tkinter]comment fixer la taille de la fenetre
    Par airod dans le forum Tkinter
    Réponses: 1
    Dernier message: 19/12/2005, 17h14
  3. Fixer une taille minimale d une fenetre
    Par anouar dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 27/10/2005, 00h53
  4. css fixer une taille pour les select
    Par NeHuS dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 19/10/2005, 10h00
  5. Fixer la taille d'une cellule d'un tableau
    Par Philofish dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 25/08/2005, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo