在Wxpython中将笔记本页面标题更改为粗体

时间:2017-11-14 14:05:52

标签: python wxpython

我有以下代码:

self.NB = wx.Notebook(self.panel_1, -1, style=0)
self.NB_Partsnote= NB_Parts(self.NB,None,userId)
self.NB_Parts2note = NB_Parts2(self.NB,None,userId)
self.NB.AddPage(self.NB_Partsnote,_("Parts"))
self.NB.AddPage(self.NB_Parts2note ,_("Parts2"))

这会创建笔记本并添加2个标签。

Part2中的

我有一个带有只读数据的textctrl:

self.cellPhone = wx.TextCtrl(self, -1, "", style=wx.TE_READONLY)

我想要的是self.cellPhone有价值,然后笔记本的Parts2标题为BOLD

我试着这样做:

class NB_Parts2(GeneralPanel):
    def __init__(self,parent,poId,userId, toolbar=None):
    more code...
    if self.cellPhone.GetValue() <> '':
        SetFont(wx.Font(8, wx.FONTFAMILY_DEFAULT,
                             wx.FONTWEIGHT_BOLD, 
                             wx.FONTSTYLE_NORMAL))

但这不起作用。什么都没发生。我也试图删除这个条件,所以它总是大胆但仍然没有任何反应。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

使用本机笔记本小部件时,可以为所有选项卡设置字体,但不能为单个选项卡设置字体。调用notebook.SetFont会导致所有选项卡都变为粗体。

一种可能的解决方案是使用图像自定义每个标签中显示的内容。

import wx

app = wx.App()

frame = wx.Frame(None, size=(600, 600))

# Draw a bitmap image with normal text
notBold = wx.Bitmap(150, 40, depth=32)
dc = wx.MemoryDC()
dc.SetFont(wx.Font(12, wx.FONTFAMILY_DEFAULT,
                   wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL,))

dc.SelectObject(notBold)
dc.Clear()
dc.DrawText("Text not bold", 5, 5)
dc.SelectObject(wx.NullBitmap)

# Draw a bitmap image with bold text
withBold = wx.Bitmap(150, 40)
dc = wx.MemoryDC()
dc.SetFont(wx.Font(12,  wx.FONTFAMILY_DEFAULT,
                   wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD,))
dc.SelectObject(withBold)
dc.Clear()
dc.DrawText("Text BOLD", 5, 5)
dc.SelectObject(wx.NullBitmap)


# wx.Notebook needs a wx.ImageList to set images from
# Notice images must be at least the size set by wx.ImageList.__init__
imgList = wx.ImageList(150, 40)
imgList.Add(notBold)
imgList.Add(withBold)


panel = wx.Panel(frame)
notebook = wx.Notebook(panel)
notebook.SetImageList(imgList)


notebook.AddPage(wx.Panel(notebook), "")
notebook.SetPageImage(0, 0)  # notBold
notebook.AddPage(wx.Panel(notebook), "")
notebook.SetPageImage(1, 1)  # withBold

notebook.AddPage(wx.Panel(notebook), "Image not required")

sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(notebook, proportion=1, flag=wx.EXPAND)
panel.SetSizerAndFit(sizer)

frame.Show()
app.MainLoop()

答案 1 :(得分:0)