wx Python - можно перезаписать системный шрифт по умолчанию? - PullRequest
0 голосов
/ 27 апреля 2020

Я использую wx Python для моего GUI. На windows ПК, использующих «Segoe UI» в качестве шрифта по умолчанию, все выглядит хорошо. Мой коллега, работающий в Китае, имеет другой системный шрифт по умолчанию. Я не знаю, как он называется, но он в моих GUI мешает с пробелами. Я пытался исправить большинство из них, но также ListCtrls и т. Д. Использовать китайский шрифт.

Поэтому я ищу способ перезаписать шрифт по умолчанию, который использует мое wx-приложение, чтобы я не мог изменить его для каждого виджета. ,

Я пытался переписать его так:

    self.SetFont(wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False,'Segoe UI'))

, но это работает в основном с панелями, а не с ListCtrls.

Я могу получить шрифт по умолчанию, например, так:

import wx

    class MyFrame(wx.Frame):

        def __init__(self, parent):
            wx.Frame.__init__(self, parent, -1, "", size=(600,300))


            fnt = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)

            wx.SystemSettings.
            print(fnt.GetFaceName())


    app = wx.App()
    frame = MyFrame(None)
    app.SetTopWindow(frame)
    frame.Show()
    app.MainLoop()

Но я никак не могу это изменить.

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Определите шрифт с помощью:

self.font=wx.Font(16, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, "Arial")

Вы можете установить разные шрифты для разных случаев. Например, когда вы хотите увеличить его или выделить жирным шрифтом и т. Д. c.

Затем вы можете установить шрифт для всех имеющихся у вас виджетов:

 self.NameOfDatabase=wx.StaticText(self.somepanel,-1)
 self.NameOfDatabase.SetLabel('Sometext')
 self.NameOfDatabase.SetFont(self.font)

Чтобы изменить шрифт в виджете listctrl, вы должны изменить шрифт для каждого элемента. с

 SetItemFont(self, item, font)

https://wxpython.org/Phoenix/docs/html/wx.ListCtrl.html#wx .ListCtrl.SetItemFont

0 голосов
/ 05 мая 2020

Изменение шрифта панели должно работать. Вы уверены, что ваш listCtrl является дочерним элементом панели?

...