Skip to content

[已解決][PySide] TypeError: 'PySide6.QtGui.QFont.setWeight' called with wrong argument types: PySide6.QtGui.QFont.setWeight(int)

Last Updated on 2021-11-08 by Clay

當我將過去使用 PyQt5 所製作的界面程式改成使用 PySide6 時,發生了如下的錯誤訊息:

TypeError: 'PySide6.QtGui.QFont.setWeight' called with wrong argument types:
  PySide6.QtGui.QFont.setWeight(int)
Supported signatures:
  PySide6.QtGui.QFont.setWeight(PySide6.QtGui.QFont.Weight)


這份介面本來是使用 Qt Designer 製作出並透過 PyUIC 轉換的 PyQt5 程式碼,其中 QFont 直接使用了 setWeight(INT) 這樣的方式調整字體的粗細程度;不過,顯然在 PySide6 中並不接受這個方法。

正如錯誤訊息所示,PySide6 只支援使用 QFont.Weight 的屬性。


解決方法

查看 PySide6 的 QFont 類別,可以發現以下程式碼:

def setWeight(self, weight): # real signature unknown; restored from __doc__
    """ setWeight(self, weight:PySide6.QtGui.QFont.Weight) -> None """
    pass



這似乎代表在 PySide6 中只能使用粗細的預設名稱來調整字體:

ConstantValueDescription
QFont.Light2525
QFont.Normal5050
QFont.DemiBold6363
QFont.Bold7575
QFont.Black8787

也就是說,如果假設你希望你的字體是常規的粗體,那你可以使用類似以下程式碼:

QFont.setWeight(QFont.Bold)


其餘情況依此類推。

但如果你希望像之前一樣使用 INT 的數值調整字體粗細,則可能可以考慮使用 setLegacyWeight() 來賦值,這個就如同該方法的名稱一般,可以跟原本 PyQt5 一樣直接設定 INT 數值資料。

QFont.setLegacyWeight(75)

References


Read More

Leave a Reply