Python Megawidgets选项卡宽度

2024-04-23 09:24:33 发布

您现在位置:Python中文网/ 问答频道 /正文

如何更改笔记本页面上选项卡的默认宽度?在

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")

我需要设置默认的标签宽度更宽,以适应标签名称。我无法访问tab width属性。最后一行我尝试使用.configure(width=30),这对选项卡没有任何影响!在


Tags: importselfmasteradd宽度tkinterbluewidget
2条回答

令人恼火的是,虽然您已经在小部件中正确地设置了制表符宽度(我可以用cget('width')看到它),但是megawidget似乎并不遵守宽度设置。在

但是,它确实调整了每个选项卡的大小,以确保它足够宽以正确显示文本。如果没有看到每个选项卡的全文,可能是因为根窗口的大小不够宽,无法显示全宽。尝试添加一个强制大小(例如,root.geometry('500x200')),看看这是否有帮助。在

我很想给你一个更好的答案,但这是我能做的最好的。祝你好运!在

好吧,我找到了解决办法,虽然很难看。它可以操纵制表符宽度。在

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,它显示在一个不错的大标签。那个这么简单的任务浪费了两个晚上。在

相关问题 更多 >