Tkinter格式化DoubleVars用于显示

问题描述 投票:0回答:1

我使用tk.DoubleVar()在tkinter GUI中保存变量。

但是,例如,如果我要显示百分比,则要这样显示。例如

0.05-> 5%

所以我可以设置格式,但是使用非数字字符(例如'%')在我想使用var.get()时似乎会引起问题,因为5%不是有效的数值。

无论如何都可以使用变量来保留实际值,同时允许显示该值的格式化版本?

python tkinter
1个回答
0
投票

您可以使用(将:.0改为显示5%而不是5.00%来将值转换为字符串)

print( "{:.0}%".format(var.get()*100) )

甚至使用特殊的{%},并且您不需要`* 100

print( "{:.0%}".format(var.get()) )

如果要同时具有-值和格式化字符串-您可以使用方法ie创建类。 to_string()以字符串形式获取。

import tkinter as tk

class PercentVar(tk.DoubleVar):

    def to_string(self):
        return "{:.0%}".format(self.get())

# ---

root = tk.Tk()

myvar = PercentVar(value=0.05)

print('value:', myvar.get())
print('string:', myvar.to_string())

或者类可能具有类__str__,当您print()或使用str()时,它会自动将字符串转换为格式化版本。>

import tkinter as tk

class PercentVar(tk.DoubleVar):

    def __str__(self):
        return "{:.0%}".format(self.get())

# ---

root = tk.Tk()

myvar = PercentVar(value=0.05)

print('value:', myvar.get())
print('string:', myvar)
print('string: ' + str(myvar))
print('string: {}'.format(myvar))
print(f'string: {myvar}')
© www.soinside.com 2019 - 2024. All rights reserved.