我正在使用tkinter窗口在Python 3中开展基于国际象棋的游戏。我使用Unicode字符作为棋子。但是,它们有两种不同的外观(如下所示:https://en.wikipedia.org/wiki/Chess_symbols_in_Unicode)。我想使用顶部的一个,但无论我使用什么字体,都会出现丑陋的底部版本。我做错了什么?
编辑:使用等宽字体
会更方便答案 0 :(得分:0)
使用:
Label(win, text='\u2654', font='Courier 96')
提供了一个非常漂亮的白王图标(与您的维基百科链接相同)
要查看系统中是否存在该字符,您可以创建以下HTML文件 test.html ,然后使用浏览器将其打开,看看它是否显示正确的图标:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<html><body>
<h1>♔♕</h1>
</body></html>
答案 1 :(得分:0)
问题可能是tkinter无法找到您指定的字体,或者您指定的字体没有unicode字形,因此它将替换为具有字形的字体。
这是一个小程序,它将向您显示系统中的所有字体,以及棋子的外观:
import sys
if sys.version_info.major is 3:
import tkinter as tk, tkinter.font as tkFont
else:
import Tkinter as tk, tkFont
root = tk.Tk()
text = tk.Text(root, tabs=(200,))
vsb = tk.Scrollbar(root, command=text.yview)
text.configure(yscrollcommand=vsb.set)
vsb.pack(side="right", fill="y")
text.pack(side="left", fill="both", expand=True)
pieces = u"\u2654\u2655\u2656\u2657\u2658\u2659\u265A\u265B\u265C\u265D\u265E\u265F\n"
for count, family in enumerate(sorted(tkFont.families())):
font = tkFont.Font(family=family, size=18)
tag = "font-%s" % count
text.tag_configure((tag,), font=font)
text.insert("end", family)
text.insert("end", "\t" + pieces, tag)
root.mainloop()