如何在 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_label
的 textvariable
设置另一个 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')
这应该可以解决问题。
我使用 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_label
的 textvariable
设置另一个 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')
这应该可以解决问题。