python-3.x - 字符串格式在 python Tkinter 文本小部件中不起作用
问题描述
我正在开发一个选项计算器,它可以显示各种类型的计算方法和结果。我想以字符串和固定宽度的格式显示这些结果。所以我尝试了下面的代码。
Hieght = 600
Width = 800
interface = tk.Tk()
canvas = tk.Canvas(interface, height= Hieght, width=Width, bg='#266969')
canvas.pack()
interface.winfo_toplevel().title("Option Calculator")
lower_frame = tk.Frame(interface, bg='#266969', bd=10)
lower_frame.place(relx=0.5, rely=0.5, relwidth = 0.8, relheight=0.5, anchor='n')
import tkinter.font as tkFont
customFont = tkFont.Font(family="Helvetica", size=12)
output = tk.Text(lower_frame, font=customFont, fg='#ffffff', bg='#32a8a8')
output.place(relwidth=1, relheight=1)
out_Str = 'In B-S Formula\
\nCall Value: {:>20.10f}\
\nPut Value: {:>20.10f}\
\n----------------------------------------------\
\nIn Monte Carlo Simulation\
\n{:<20s}{:>20s}{:>20s}\
\n{:<20s}{:>20.10f}{:>20.10f}\
\n{:<20s}{:>20.10f}{:>20.10f}\
\n{:<20s}{:>20.10f}{:>20.10f}'.format \
(Option1.CallPrice, \
Option1.PutPrice, \
' ', 'Call Option', 'Put Option', \
'Mean', Option1.Call_Mean_n, Option1.Put_Mean_n, \
'Upper bound', Option1.Call_upperI, Option1.Put_upperI, \
'Lower bound', Option1.Call_lowerI, Option1.Put_lowerI)
output.insert(tk.END, out_Str)
这些文本无法以我想要的方式在文本框区域对齐(看涨期权和看跌期权可以与数字对齐,数字也可以彼此对齐)。但是当我把控制台复制出来并粘贴到其他地方,比如教科书或这里时,它变成了我想要的方式。控制台(如果我复制并粘贴)如下所示。文本框区域中的控制台显示为附图。
粘贴后的控制台(我想显示的方式) 在此处输入图像描述
文本框中的控制台(实际显示在 tkinter 中) 在此处输入图像描述
谁能告诉我导致差异的原因?以及如何显示我想要的结果?
非常感谢。
解决方案
因为字体。例如,Courier New 是一种 ttf、true 类型字体,其中字符的宽度相等
推荐阅读
- .net - 有没有办法获取当前 raygun 中的所有错误?
- python - 在关于 argparse.ArgumentParser() 的 google colab 错误上执行代码时
- html - 真实的例子
- java - 我的映射器接口中是否可以有多个方法,几乎相同但返回对象不同?
- arrays - Shopify JSON 类型元字段循环不起作用
- sql - 如何对依赖于内连接表信息的表应用安全策略?
- environment-variables - 赛普拉斯,不同的 baseURL 和用户名
- android - 无法在使用 CI/CD 工具获取的真实设备中启动 apk。(无法实例化应用程序)
- android-studio - 代码片段漂浮在半空中作为工具提示,无法隐藏,提取方法后 [IntelliJ Idea / Android Studio]
- reactjs - React js悬停元素并在离开元素时禁用悬停