コードを使用してテキスト ボックスにフォントを追加する必要があります。wpf.LoadComponent() メソッドは、ディスクから .xaml ファイルを読み込み、WPF ウィンドウを作成しますが、フォントを含む埋め込みリソースを調べません。私の知る限り、最も簡単な方法は、ディスクからフォントをロードすることです。
まず、フォントのビルド アクションを変更して、出力ディレクトリへのコピーがAlwaysになるようにします。あなたの例では、フォントは bin\Debug\Fonts\ フォルダーにコピーされます。
テキストボックスに名前を付けて、コードからアクセスできるようにする必要があります。MainWindow.xaml でx:Name属性を TextBox に追加します。ここではtextboxという名前を付けました。
<Grid>
<TextBox x:Name="textbox" Text="ABC"/>
</Grid>
これで、MainWindowクラスにテキスト ボックスのプロパティを追加し、コンストラクターでディスクからフォントを読み込んでテキスト ボックスに適用するコードを記述できます。完全なコードを以下に示します。
import wpf
from System import Uri
from System.IO import Path
from System.Windows import Window
from System.Windows.Media import FontFamily
class MainWindow(Window):
def __init__(self):
wpf.LoadComponent(self, 'MainWindow.xaml')
self.addFont()
def addFont(self):
fontDirectory = Path.GetFullPath(".\\Fonts\\")
uri = Uri(fontDirectory)
fontFamily = FontFamily(uri, "./#Foo")
self.textbox.FontFamily = fontFamily
def get_textbox(self):
return self._textbox
def set_textbox(self, value):
self._textbox = value
textbox = property(get_textbox, set_textbox)
addFont () メソッドは、フォントがあるディレクトリを指す Uri を作成し、フォントのファミリ名を使用して新しい FontFamily を作成し、最後に TextBox の FontFamily プロパティを更新します。