2013-10-15 64 views
0

如何使每行的按鈕固定爲大文本,以便它看起來像預期的輸出,幾乎所有的按鈕都像牆一樣對齊。Python - 如何使每行對齊的所有按鈕看起來像按鈕牆

不工作:

enter image description here

預期輸出:

enter image description here

代碼:不是努力使

import gobject, gtk 
gobject.threads_init() 

class rightclick(object): 
    def __init__(self): 
    self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
    self.window.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0, 0, 0)) 
    self.window.set_size_request(630, 480) 
    self.window.set_border_width(1) 
    self.window.set_title("PIPTPT") 
    self.window.move(0,720 /3 - 200) 
    self.window.set_name("main window") 
    self.window.connect("delete-event", gtk.main_quit) 
    self.vbox = gtk.VBox() 
    self.vbox.set_border_width(0) 
    self.vbox.pack_start(self.create_bbox(True, "",5, gtk.BUTTONBOX_START), True, True, 0) 
    self.window.add(self.vbox) 

    def create_bbox(self, horizontal, title, spacing, layout): 
     frame = gtk.Frame(title) 
     frame.set_label_align(0, 0) 
     frame.set_shadow_type(gtk.SHADOW_NONE) 
     frame.set_border_width(2) 
     if horizontal: 
      bbox = gtk.HButtonBox() 
     else: 
      bbox = gtk.VButtonBox() 

     bbox.set_border_width(0) 
     frame.add(bbox) 
     bbox.set_layout(layout) 
     bbox.set_spacing(0) 
     button_height= 22 
     for x in range(0, 35): 
     button = gtk.Button() 
     button.props.relief = gtk.RELIEF_NONE 
     label = gtk.Label() 
     label.set_markup('<span color="#bbbbbb"><small>Long Long Long</small></span>'); 
     button.add(label) 
     button.set_size_request(48, button_height) 
     button.connect("clicked" , self.button_quit , None) 
     bbox.add(button) 

     return frame 

    def run(self): 
    self.window.show_all() 
    self.window.set_keep_above(True) 
    if(self.window.get_window().get_state() == gtk.gdk.WINDOW_STATE_MAXIMIZED): 
     self.window.unmaximize() 
    gtk.main() 

    def button_quit(self, widget, event): 
    gtk.main_quit() 

if __name__=='__main__': 
    s=rightclick() 
    s.run() 
gobject.MainLoop.run() 

回答

0

OK - 這個例子是我一直在尋找因爲,它的工作原理。

#!/usr/bin/python 
import gtk 

class PyApp(gtk.Window): 

    def __init__(self): 
     super(PyApp, self).__init__() 

     self.set_title("Calculator") 
     self.set_size_request(250, 230) 
     self.set_position(gtk.WIN_POS_CENTER) 

     vbox = gtk.VBox(False, 2) 
     table = gtk.Table(5, 4, True) 

     table.attach(gtk.Button("Cls"), 0, 1, 0, 1) 
     table.attach(gtk.Button("Bck"), 1, 2, 0, 1) 
     table.attach(gtk.Label(), 2, 3, 0, 1) 
     table.attach(gtk.Button("Close"), 3, 4, 0, 1) 

     table.attach(gtk.Button("7"), 0, 1, 1, 2) 
     table.attach(gtk.Button("8"), 1, 2, 1, 2) 
     table.attach(gtk.Button("9"), 2, 3, 1, 2) 
     table.attach(gtk.Button("/"), 3, 4, 1, 2) 

     table.attach(gtk.Button("4"), 0, 1, 2, 3) 
     table.attach(gtk.Button("5"), 1, 2, 2, 3) 
     table.attach(gtk.Button("6"), 2, 3, 2, 3) 
     table.attach(gtk.Button("*"), 3, 4, 2, 3) 

     table.attach(gtk.Button("1"), 0, 1, 3, 4) 
     table.attach(gtk.Button("2"), 1, 2, 3, 4) 
     table.attach(gtk.Button("3"), 2, 3, 3, 4) 
     table.attach(gtk.Button("-"), 3, 4, 3, 4) 

     table.attach(gtk.Button("0"), 0, 1, 4, 5) 
     table.attach(gtk.Button("."), 1, 2, 4, 5) 
     table.attach(gtk.Button("="), 2, 3, 4, 5) 
     table.attach(gtk.Button("+"), 3, 4, 4, 5) 

     #vbox.pack_start(gtk.Entry(), False, False, 0) 
     vbox.pack_end(table, True, True, 0) 

     self.add(vbox) 

     self.connect("destroy", gtk.main_quit) 
     self.show_all() 


PyApp() 
gtk.main()