Python Megawidgets选项卡宽度

时间:2015-09-16 21:18:09

标签: python tkinter

如何更改笔记本页面上标签的默认宽度?

.configure(width=30)

我需要将默认标签宽度设置得更宽,以适应标签名称。我无法访问tab宽度属性。我尝试使用 class User(object): def __init__(self, userid): self.userid = userid self.user = api.get_user(self.userid) 的最后一行,这对标签没有影响!

2 个答案:

答案 0 :(得分: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,它显示在一个漂亮的大标签中。这是一个简单的任务浪费了两个晚上。

答案 1 :(得分:-1)

令人讨厌的是,虽然您已经在窗口小部件中正确设置了标签宽度(我可以使用cget('width')看到它),但是megawidget看起来并不符合宽度设置。

但是,它会调整每个标签的大小以确保其足够宽以正确显示文本。如果您没有看到每个标签的全文,可能是因为根窗口的大小不够宽,无法显示整个宽度。尝试添加强制尺寸(例如root.geometry('500x200'))并查看是否有帮助。

我希望能为你找到更好的答案,但这是我能做的最好的事情。祝你好运!