如何在 tkinter 中的 textvariable 前面插入 '$' 符号

How to insert '$' sign infront of textvariable in tkinter

我使用 tkinter 创建了一个 ATM 单击余额按钮时显示当前余额 并且它添加了不同 类 中的存入和提取的钱,这些钱从设置为 0 的当前余额和余额

中添加或减去

存储在

class SampleApp(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        self.shared_data={'Balance':tk.IntVar()}

屏幕上会显示余额

class BalancePage(tk.Frame):
        global current_balance
        controller.shared_data['Balance'].set(current_balance)
    
        balance_label=tk.Label(self,textvariable=controller.shared_data['Balance'],font=('orbitron',13),fg='white',bg='#3d3d5c',anchor='w')
        balance_label.pack(fill='x')

我只想在显示的金额前显示一个“$”符号(即 0 并且想要 $0),请帮助

#WithdrawPage
class WithdrawPage(tk.Frame):
        def withdraw(amount):
            global current_balance
            if amount>current_balance:
                messagebox.showwarning('WARNING','Not sufficient funds!')
            else:
                current_balance -= amount
                controller.shared_data['Balance'].set(current_balance)
                controller.show_frame('MenuPage')
#DepositPage
class DepositPage(tk.Frame):
        def deposit_cash():
            global current_balance
            current_balance += int(cash.get())
            controller.shared_data['Balance'].set(current_balance)
            controller.show_frame('MenuPage')
            cash.set('')

使用此示例通过将 $ 与最终结果

连接起来来实现您要执行的操作
print ("$"+ current_balance)

或这个

print ("$", current_balance)

您可以为 balance_labeltextvariable 设置另一个 StringVar:

balance_label = tk.Label(..., textvariable=self.balance_var,...)

然后在 controller.shared_data['Balance'] 上设置 trace() 并在跟踪回调中更新 self.balance_var

self.balance_var.set('$'+str(self.controller.shared_data['Balance'].get()))

由于我没有您的代码的全貌,下面是建议的代码更改:

class BalancePage(tk.Frame):
    def __init__(self, parent, controller, *args, **kw):
        ...
        self.controller = controller

        self.balance_var = tk.StringVar()
        controller.shared_data['Balance'].trace('w', self.on_balance_changed)

        balance_label = tk.Label(self, textvariable=self.balance_var, font=('orbitron',13),
                                 fg='white', bg='#3d3d5c', anchor='w')
        balance_label.pack(fill='x')
        ...

    def on_balance_changed(self, *args):
        self.balance_var.set('$'+str(self.controller.shared_data['Balance'].get()))

尝试像这样更改 balance_label 文本变量:

balance_label = tk.Label(self, textvariable="$"+controller.shared_data['Balance'], font=('orbitron', 13), fg='white', bg='#3d3d5c', anchor='w')

这应该可以解决问题。