2015-09-16 2 views
0

Как изменить ширину вкладок по умолчанию на странице ноутбука?Python Megawidgets tab widths

import tkinter #widget library ships with Python 
import Pmw  #allows access to update tkinter widgets 

class TextBookGUI: 
    # class constructor 
    # populates each note book page 
    def __init__(self, master): 

     #place hash tables here 

     """ 
     Create 5 pages on using Pmw notebook widget. 
     Documenation for notebook: 
     http://pmw.sourceforge.net/doc/NoteBook.html 
     """ 

     self.nb = Pmw.NoteBook(master) 
     Pmw.Color.changecolor(self.nb.component('hull'), background='blue') 



     self.HomeTab = self.nb.add("Welcome") 
     self.nb.tab('Welcome').focus_set() 

     self.StudentTab = self.nb.add("Students") 
     self.BookTab = self.nb.add("Books") 
     self.LoanTab = self.nb.add("Loans") 
     self.HelpTab = self.nb.add("Help") 
     self.nb.pack(fill = 'both', expand = 1, padx = 10, pady = 10) 
     self.nb.setnaturalsize() 

     #format the house style of tabs: yellow bg and blue text 
     self.nb.component('Welcome-tab').configure(font= ('Helvetica', 7 ,'bold', 'italic'), width= 30,fg= "yellow", bg="blue") 

Мне нужно, чтобы ширина закладки по умолчанию была более широкой, чтобы разместить имена вкладок. Я не могу получить доступ к свойству ширины табуляции. В последней строке, которую я пробовал с помощью .configure(width=30), это не повлияло на вкладку!

ответ

-1

Досадно, в то время как вы правильно установить ширину табуляции в виджете (я могу видеть его с помощью cget('width'), то megawidget не появляется в честь настройки ширины.

Однако, это размер каждой вкладки в убедитесь, что он достаточно широкий, чтобы правильно отображать текст. Если вы не видите полный текст каждой вкладки, это может быть из-за того, что корневое окно не имеет размера, достаточного для отображения полной ширины. Попробуйте добавить принудительный (например, root.geometry('500x200')) и посмотрите, поможет ли это.

Я хотел бы получить лучший ответ для вас, но это лучшее, что я могу сделать. Удачи!

2

Хорошо, у меня есть решение, хотя и уродливое. Он управляет шириной табуляции.

class TextBookGUI: 


# class constructor 
# populates each note book page 
def __init__(self, master): 

    #place hash tables here 

    """ 
    Create 5 pages on using Pmw notebook widget. 
    Documenation for notebook: 
    http://pmw.sourceforge.net/doc/NoteBook.html 
    """ 
    Pmw.initialise(master) 
    self.nb = Pmw.NoteBook(master,borderwidth=2,arrownavigation=True,tabpos='n') 



    self.HomeTab = self.nb.add("Welcome") 
    self.nb.tab('Welcome').focus_set() 
    self.StudentTab = self.nb.add("Students") 
    self.BookTab = self.nb.add("Books") 
    self.LoanTab = self.nb.add("Loans") 
    self.HelpTab = self.nb.add("Help") 

    *self.nb._pageAttrs['Welcome']['tabreqwidth'] = 200 
    self.nb._pageAttrs["Welcome"]['tabreqheight'] = 100 
    self.nb._pageAttrs["Students"]['tabreqwidth'] = 200 
    self.nb._pageAttrs["Students"]['tabreqheight'] = 100 

    self.nb._pageAttrs["Books"]['tabreqwidth'] = 200 
    self.nb._pageAttrs["Books"]['tabreqheight'] = 100 

    self.nb._pageAttrs['Loans']['tabreqwidth'] = 200 
    self.nb._pageAttrs["Loans"]['tabreqheight'] = 100 

    self.nb._pageAttrs['Help']['tabreqwidth'] = 200 
    self.nb._pageAttrs["Help"]['tabreqheight'] = 100* 


    #format the house style of tabs: yellow bg and blue text 
    self.nb.component('Welcome-tab').configure(font= ('Helviticva',20 ,'bold italic'), 
         fg= "yellow",bg="blue",wraplength=150) 

    self.nb.component('Students-tab').configure(font= ('Helviticva',20 ,'bold italic'), 
         fg= "yellow",bg="blue",wraplength=150) 

    self.nb.component('Books-tab').configure(font= ('Helviticva',20 ,'bold italic'), 
         fg= "yellow",bg="blue",wraplength=150) 
    self.nb.component('Loans-tab').configure(font= ('Helviticva',20 ,'bold italic'), 
         fg= "yellow",bg="blue",wraplength=150) 

    self.nb.component('Help-tab').configure(font= ('Helviticva',20,'bold italic'), 
         fg= "yellow",bg="blue",wraplength=150) 

    self.nb.pack(fill = 'both', expand = 1, padx = 10, pady = 10) 

    self.nb.setnaturalsize() 

После поиска в сети кто-то предложил повторить словарь атрибутов страницы с помощью iterrkeys(). Это не сработало, поэтому я вынул код из цикла и использовал атрибуты из словаря pageAttrs, которые были [reqtabwidth], [reqtabheight]. Он работал! Код имеет звезды вокруг него и был добавлен в код выше. Вы можете видеть, что размер текста теперь равен 20, и он отображается на большой большой вкладке. Это два вечера, потраченных впустую для такой простой задачи.

+0

Хорошо! Это было больше времени, чем я мог выкопать. :) –

+0

Я узнал, откуда я ошибся: Pmw имеет три вида ноутбуков в соответствии с книгой Грейсона под названием «Программирование Python и Tkinter» - ноутбук, ноутбукR и блокнот. С тех пор это было заменено NoteBook, но есть обратная совместимость. Я должен был просто использовать страницу notebook92 (62), которая обладает свойством табуляции, которое может быть установлено в методе initialise()! –