前提・実現したいこと
anaconda の tkinter のフォントを美しくしたいと思っています。
同じプログラムでも、anaconda3 を使う場合と linux mint 20.1 の python3.8 を使う場合では、以下のようにかなり異なります。
anaconda3
linux mint 20.1 のデフォルトの python 3.8 に tkinter をインストールした場合
発生している問題・エラーメッセージ
エラーではないのですが、anaconda 上の tkinter を使うとフォントのアンチエイリアスが効きません。 また、フォントの種類も20種類しかありません。 さらにわからないのは、anaconda の tkinter のタイトルはきれいに表示されることです。
該当のソースコード
import tkinter as tk root = tk.Tk() root.geometry("300x100") root.title("rootタイトル") label1 = tk.Label( text='Helloこんにちは', font=("",20) ) label1.grid() root.mainloop()
試したこと
20種類のフォントをいろいろ試してみたのですが、基本的には変わりませんでした。
それとネット上に情報があまりないのでどうしたらいいのかがよくわかりませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
こういうことみたいです
https://cloud6.net/so/python/589187
御提示頂いたサイトは私も見たことがありますが、これまで試しておりませんでした。
今回やってみたところ、virutualbox の linux mint 19.3 では失敗しますが、host の linux mint 20.1 では次の一行で成功します。
sudo cp /usr/lib/x86_64-linux-gnu/libtk8.6.so /home/user/anaconda3/lib
いろいろ実験すると、libtk8.6.so がフォント設定ファイルであることがわかりました。
virtualbox の linux mint 19.3 では、なぜか/usr/lib/x86_64-linux-gnu/libtk8.6.so そのものが存在しません。
そこで、host の libtk8.6.so を linux mint 19.3 に手動で移設したのですが、やはり文字はギザギザですね。ただ、virtualbox って動作がおかしいことがよくあるので、そのままは信用できません。
一度、linux mint 19.3 を本体にクリーンインストールしてやってみます。
> host の linux mint 20.1 では次の一行で成功します。
それをやると、host の Anaconda の tkinter でフォントのアンチエイリアスが効くようになるのですか?
> virtualbox の linux mint 19.3 では、なぜか/usr/lib/x86_64-linux-gnu/libtk8.6.so そのものが存在しません。
linux mint 19.3 の(Anaconda ではない)Python で tkinter が使えるのなら、どこかに libtk*.so があるはずです (数字は 8.6 ではないかもしれない)
> host の libtk8.6.so を linux mint 19.3 に手動で移設した
とは、virtualbox の linux mint 19.3 にも Anaconda をインストールしていて、その Anaconda のどこかのディレクトリにも libtk8.6.so があり、それを host の /usr/lib/x86_64-linux-gnu/libtk8.6.so で置き換えた、ということですか?
一部おかしなことを書き込んでおり失礼しました。
host には「sudo apt-get -y install python3-tk」で tkinter をインストールしていたのですが、virtualbox の linux mint 19.3 にはインストールしていなかったので、libtk8.6.so が anaconda 内にしかないのは当然でした。
そこで、linux mint 19.3 にも「sudo apt-get -y install python3-tk」で tkinter をインストールし、
sudo cp /usr/lib/x86_64-linux-gnu/libtk8.6.so /home/user/anaconda3/lib
としてみたのですが、
This probably means that tk wasn't installed properly.
というエラーメッセージが出ます。
これは、virtualbox 内の linux mint 19.3 でも、host に linux mint 19.3 をクリーンインストールしても同じようです。
ところが、host に linux mint 20.1 をインストールして、tkinter もインストールし、
sudo cp /usr/lib/x86_64-linux-gnu/libtk8.6.so /home/user/anaconda3/lib
とすると、ギザギザにはなりません。
/home/user/anaconda3/lib/libtk8.6.so がない場合は、自動的に /usr/lib/x86_64-linux-gnu/libtk8.6.so を読み込むようなので、そのファイルを rename して実験してみましたが、やはり linux mint 20.1 の場合は、/usr/lib/x86_64-linux-gnu/libtk8.6.so の単純コピーで希望通りになるようです。
ということは、linux mint のバージョンと anaconda のバージョンを合わせる必要があるのではないかと思っています。
これまでは anaconda の最新バージョンをインストールしていたのですが、試しに少し古い「Anaconda3-2019.03-Linux-x86_64.sh」をダウンロードしたところ思い通りの結果になりました。
/usr/lib/x86_64-linux-gnu/libtk8.6.so をそのまま anconda にコピーすればアンチエイリアスが効きます。
linux mint 19.3 の python3 は 3.6 ですが、「Anaconda3-2019.03-Linux-x86_64.sh」をインストールすると anaconda の python は 3.7 になります。anaconda の最新バージョンにすると python は 3.8 になるので、その辺が関係しているのかもしれません。
とにかく、おかげさまで思い通りの結果を得ることができました。
お付き合い頂きましてありがとうございました。
回答1件
あなたの回答
tips
プレビュー