[résolu][pyGTK]question de débutant - fixer les dimentions d'un TextVi

question de débutant - fixer les dimentions d'un TextVi [résolu][pyGTK] - Python - Programmation

Marsh Posté le 30-07-2005 à 04:45:35    

Bonjour tout le monde
 
Je suis débutant en python et j'essaye de programmer une petite calculatrice en mode rpl avec pygtk.
 
J'affiche un clavier a l'aide de deux Tables dans une VBox, et la pile avec un TextView, dans la meme VBox.
Le clavier en deux parties comprend un pavé numerique classique et une colone de bouton pour les manipulation de pile.
 
mais la pile s'affiche par defaut avec 1 pixel de large seulement... et voila mon probleme.
 
Il s'agit de definir la largeur et la hauteur du TextView, si possible en colones/lignes de caracteres, et que cela ne bouge plus.
 
La pourtant tres riche doc de cette lib ne m'a rien appris quant au redimentionnement des widgets, ou alors c'est un mechanisme qui m'echappe...
 
merci d'avance !


Message édité par paflaxe le 01-08-2005 à 23:03:59
Reply

Marsh Posté le 30-07-2005 à 04:45:35   

Reply

Marsh Posté le 30-07-2005 à 10:27:41    

tu devrais t'aider du logiciel glade pour construire ton interface, c'est quand même plus userfriendly :)

Reply

Marsh Posté le 30-07-2005 à 15:35:13    

J'ai regardé du côté de Glade, mais je n'ai pas envie de creer trop de dépendances sur mes applis, question de portabilité. Déja que python et gtk sont pas tres répandu ailleurs que sur unix, à terme je compte utiliser sdl aussi, si en plus je me traine glade, je peux oublier les utilisateurs windows...  
 
Et puis pour apprendre gtk, le mieux c'est de coder du gtk... Glade va pas beaucoup m'aider.
 
Merci quand meme

Reply

Marsh Posté le 30-07-2005 à 16:59:51    

tu gagnes quand même beaucoup de temps en utilisant glade, m'enfin c'est toi qui voit ;)

Reply

Marsh Posté le 30-07-2005 à 17:39:22    

Quand mon but sera de gagner du temps, on verra, pour le moment mon but est d'apprendre.

Reply

Marsh Posté le 01-08-2005 à 02:57:52    

voila le code de l'interface du chose, pour ceux que ca interessent.
pour les puristes : il y a certainement d'enormes erreurs de style, veuillez m'en excuser, tout les conseils sont les bienvenu.
 


#!/usr/bin/env python
# -*- coding: utf-8 -*-  
 
import pygtk
pygtk.require('2.0')
import gtk
 
class main_win:
 
 def delete_event(self, widget, event, data=None):
  gtk.main_quit()
  return False
 
 
 def keypressed(self, widget, kid):
  print kid
 
 def __init__(self):  
   
  # definition de la fenetre
  self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  self.window.set_title("rpl calc" )
  self.window.set_border_width(0)
   
   
  # contenaire principal
  self.box_main = gtk.HBox(False, 5)
   
  #################################################
  # pile et ligne de saisie                       #
  #################################################
   
  #definition du contenaire  
  self.box_stack = gtk.VBox(True, 5)
   
  #definition de la pile
  self.sw_stack = gtk.ScrolledWindow()
  self.sw_stack.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
  self.stack = gtk.TextView(buffer=None)
  self.stack_buffer = self.stack.get_buffer()
  self.sw_stack.add(self.stack)
 
   
  #mise en place
  #de la pile
  self.box_main.pack_start(self.sw_stack, True, True, 0)
  #de la ligne de saisie
   
   
  #affichage
  #de la pile
  self.stack.show()
  self.sw_stack.show()
  #################################################
  # pavé numérique                                #
  #################################################
   
  # definition de la table de boutons
  self.table_pad_numeric = gtk.Table(5, 4, True)
   
  # definition des boutons
  self.button0 = gtk.Button("0" )
  self.button1 = gtk.Button("1" )
  self.button2 = gtk.Button("2" )
  self.button3 = gtk.Button("3" )
  self.button4 = gtk.Button("4" )
  self.button5 = gtk.Button("5" )  
  self.button6 = gtk.Button("6" )  
  self.button7 = gtk.Button("7" )
  self.button8 = gtk.Button("8" )
  self.button9 = gtk.Button("9" )
  self.button_dec = gtk.Button("." )
  self.button_div = gtk.Button("/" )
  self.button_mul = gtk.Button("*" )
  self.button_sub = gtk.Button("-" )
  self.button_add = gtk.Button("+" )
  self.button_enter = gtk.Button("enter" )  
   
  self.button0.connect("clicked", self.keypressed, "bt_0" )  
  self.button1.connect("clicked", self.keypressed, "bt_1" )  
  self.button2.connect("clicked", self.keypressed, "bt_2" )  
  self.button3.connect("clicked", self.keypressed, "bt_3" )  
  self.button4.connect("clicked", self.keypressed, "bt_4" )  
  self.button5.connect("clicked", self.keypressed, "bt_5" )
  self.button6.connect("clicked", self.keypressed, "bt_6" )
  self.button7.connect("clicked", self.keypressed, "bt_7" )
  self.button8.connect("clicked", self.keypressed, "bt_8" )
  self.button9.connect("clicked", self.keypressed, "bt_9" )
  self.button_dec.connect("clicked", self.keypressed, "bt_dec" )
  self.button_div.connect("clicked", self.keypressed, "bt_div" )
  self.button_mul.connect("clicked", self.keypressed, "bt_mul" )  
  self.button_sub.connect("clicked", self.keypressed, "bt_sub" )
  self.button_add.connect("clicked", self.keypressed, "bt_add" )
  self.button_enter.connect("clicked", self.keypressed, "bt_enter" )
 
 
  # mise en place
  # des boutons
  self.table_pad_numeric.attach(self.button_div,   1, 2, 0, 1, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button_mul,   2, 3, 0, 1, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button_sub,   3, 4, 0, 1, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button7,      0, 1, 1, 2, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button8,      1, 2, 1, 2, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button9,      2, 3, 1, 2, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button_add,   3, 4, 1, 3, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button4,      0, 1, 2, 3, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button5,      1, 2, 2, 3, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button6,      2, 3, 2, 3, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button1,      0, 1, 3, 4, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button2,      1, 2, 3, 4, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button3,      2, 3, 3, 4, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button_enter, 3, 4, 3, 5, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button0,      0, 2, 4, 5, xpadding = 3, ypadding = 3)
  self.table_pad_numeric.attach(self.button_dec,   2, 3, 4, 5, xpadding = 3, ypadding = 3)
   
  # de la table
  self.box_main.pack_start(self.table_pad_numeric, True, True, 0)
 
  # affichages
  # des boutons
  self.button0.show()
  self.button1.show()
  self.button2.show()
  self.button3.show()
  self.button4.show()
  self.button5.show()
  self.button6.show()
  self.button7.show()
  self.button8.show()
  self.button9.show()
  self.button_dec.show()  
  self.button_div.show()  
  self.button_mul.show()  
  self.button_sub.show()  
  self.button_add.show()  
  self.button_enter.show()  
   
  # de la table
  self.table_pad_numeric.show()
   
  #################################################
  # pavé manipulation de la pile                  #
  #################################################
 
  #definition de la table
  self.table_pad_stack = gtk.Table(5, 1, False)
   
  #definition des boutons
  self.button_rot =  gtk.Button("rot" )
  self.button_dup =  gtk.Button("dup" )
  self.button_drop = gtk.Button("drop" )
  self.button_clr =  gtk.Button("clr" )
  self.button_edit = gtk.Button("edit" )
   
  self.button_rot.connect("clicked", self.keypressed, "bt_rot" )
  self.button_dup.connect("clicked", self.keypressed, "bt_dup" )
  self.button_drop.connect("clicked", self.keypressed, "bt_drop" )
  self.button_clr.connect("clicked", self.keypressed, "bt_clr" )
  self.button_edit.connect("clicked", self.keypressed, "bt_edit" )
   
  #mise en place
  #des boutons
  self.table_pad_stack.attach(self.button_rot,  0, 1, 0, 1, xpadding = 3, ypadding = 3)
  self.table_pad_stack.attach(self.button_dup,  0, 1, 1, 2, xpadding = 3, ypadding = 3)
  self.table_pad_stack.attach(self.button_drop, 0, 1, 2, 3, xpadding = 3, ypadding = 3)
  self.table_pad_stack.attach(self.button_clr,  0, 1, 3, 4, xpadding = 3, ypadding = 3)
  self.table_pad_stack.attach(self.button_edit, 0, 1, 4, 5, xpadding = 3, ypadding = 3)
 
  # de la table
  self.box_main.pack_start(self.table_pad_stack, True, True, 0)
 
  #affichage
  #des boutons
  self.button_rot.show()
  self.button_dup.show()
  self.button_drop.show()
  self.button_clr.show()
  self.button_edit.show()
   
  #de la table
  self.table_pad_stack.show()
 
 
   
  self.window.add(self.box_main)
  self.box_main.show()
   
  # evenements  
  self.window.connect("delete_event", self.delete_event)
   
   
   
  # affichage de la fenetre
  self.window.show() # de la fenetre
 
def main():
 gtk.main()
   
if __name__ == "__main__":
 hello = main_win()
 main()

Reply

Marsh Posté le 01-08-2005 à 23:02:49    

la fonction gtk.Widget.set_size_request à l'air de repondre à mes besoins


Message édité par paflaxe le 01-08-2005 à 23:03:11
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed