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 中只能使用粗細的預設名稱來調整字體:
Constant | Value | Description |
---|---|---|
QFont.Light | 25 | 25 |
QFont.Normal | 50 | 50 |
QFont.DemiBold | 63 | 63 |
QFont.Bold | 75 | 75 |
QFont.Black | 87 | 87 |
也就是說,如果假設你希望你的字體是常規的粗體,那你可以使用類似以下程式碼:
QFont.setWeight(QFont.Bold)
其餘情況依此類推。
但如果你希望像之前一樣使用 INT 的數值調整字體粗細,則可能可以考慮使用 setLegacyWeight()
來賦值,這個就如同該方法的名稱一般,可以跟原本 PyQt5 一樣直接設定 INT 數值資料。
QFont.setLegacyWeight(75)