Как вставить знак '$' перед текстовой переменной в tkinter - PullRequest
1 голос
/ 05 августа 2020
• 1000 *

сохраняется в

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('')

Ответы [ 3 ]

1 голос
/ 05 августа 2020

Вы можете настроить другой StringVar для textvariable из balance_label:

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

Затем настроить trace() на controller.shared_data['Balance'] и обновить 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()))
1 голос
/ 05 августа 2020

Попробуйте изменить balance_label текстовую переменную следующим образом:

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

Это должно решить проблему.

1 голос
/ 05 августа 2020

Используйте этот пример, чтобы добиться того, что вы делаете, объединив $ с окончательным результатом

print ("$"+ current_balance)

или это

print ("$", current_balance)
...