I want to do exchange conversion like the image, but it doesn't work well.I don't even know how to insert the image.
Please point it out and make improve it.
import tkinter
import tkinter.messagebox
root=tkinter.Tk()
def convert():
ifradio_var.get() == 1:# Chinese Yuan
AusDollar=round (entry_var.get()*0.209234,0)
tkinter.messagebox.showinfo('Your', str(entry_var), 'Chinese Yuan=', str(AusDollar), 'in Australian Dollars')
elif currency.upper() == 2:# Euro
AusDollar=round (entry_var.get()*1.59524,0)
tkinter.messagebox.showinfo('Your', str(entry_var), 'Euros=', str(AusDollar), 'in Australian Dollars')
elif currency.upper() == 3:#British Pound
AusDollar=round (entry_var.get*1.83338,0)
tkinter.messagebox.showinfo('Your', str(entry_var), 'British Pounds=', str(AusDollar), 'in Australian Dollars')
elif currency.upper() == 4:#RussianRuble
AusDollar=round (entry_var.get*0.0214580,0)
tkinter.messagebox.showinfo('Your', str(entry_var), 'Russian Rubles=', str(AusDollar), 'in Australian Dollars')
main_frame = tkinter.Frame(root).grid()
radio_var=tkinter.IntVar()
radio_var.set(1)
entry_var=tkinter.IntVar()
# create buttons
tkinter.Label(main_frame, text="please select the current to convert").grid(column=1, row=1)
tkinter.Radiobutton(main_frame, text="Chinese Yuan", variable=radio_var,
value = 1 ).grid (column = 1, row = 2)
tkinter.Radiobutton(main_frame, text="Euro", variable=radio_var,
value=2).grid(column=1, row=3)
tkinter.Radiobutton(main_frame, text="British pound", variable=radio_var,
value = 3 ).grid (column = 1, row = 4)
tkinter.Radiobutton(main_frame, text="Russian Rule", variable=radio_var,
value = 4 ).grid (column = 1, row=5)
tkinter.Label(main_frame, text="How much money do you want to convert?:") .grid(column=1, row=7)
tkinter.Entry(main_frame, textvariable=entry_var, width=10).grid(column=2, row=7)
tkinter.Button(main_frame,
text="Convert", command=convert).grid(column=1, row=8)
quit_button=tkinter.Button(main_frame, text="Quit", command=root.destroy).grid(column=2,row=8)
tkinter.mainloop()
In the code in the question section, there is an error specifying the parameters of tkinter.messagebox.showinfo()
and it is an error.
I didn't include the process of inserting the image, but I rewritten it as follows.
from tkinter import Tk, Frame, Label, Button, Radiobutton, Entry, messagebox
from tkinter import IntVar, W
conversion_table = {
1: {'currency': 'Chinese Yuan', 'rate': 0.209234},
2: {'currency': 'Euro', 'rate': 1.595240},
3: {'currency': 'British Pounds', 'rate': 1.833380},
4: {'currency': 'Russian Rule', 'rate': 0.021458},
}
class CurrencyConverter (Tk):
def__init__(self):
Tk.__init__(self)
self.currency=IntVar(value=1)
self.money=IntVar(value=0)
self.counter = 1
# Widgets
frame = Frame(self).grid()
US>Label(
frame, text = 'Please select the current to convert'
) .grid (column=1, row=self.row(), columnspan=4, sticky=W, padx=5)
# Currents
fork, item in conversion_table.items():
Radiobutton(
frame, text=item['currency'], variable=self.currency, value=k
) .grid (column=1, row=self.row(1), columnspan=4, sticky=W, padx=20)
# Entry box
US>Label(
frame, text = 'How much money do you want to convert?'
) .grid (column=1, row=self.row(1), columnspan=3, sticky=W, padx=5)
entry=Entry(frame, textvariable=self.money, width=10)
entry.grid (column=4, row=self.row(), padx=(1,10))
entry.configure(
validate='key', vcmd=(entry.register(
lambdap —True if p.isdigit() or p==' else False), '%P')
)
# Buttons for operations
Button(
frame, text='Convert', command=self.convert
) .grid(column=1, row=self.row(1), columnspan=2,paddy=(10,0))
Button(
frame, text='Quit', command=self.destroy
) .grid (column=3, row=self.row(), columnspan=2, padx=(10,0), pady=(10,0))
def convert (self):
try:
val=self.money.get()
except:
return
current=conversion_table [self.current.get()]
aus_dollar=round (val*currency ['rate'], 1)
messagebox.showinfo(
'Results',
f'Your {val} {currency["currency"]} = {aus_dollar} in Australian Dollars'
)
default(self, step=0):
self.counter+=step
return self.counter
if__name__=='__main__':
gui=CurrencyConverter()
gui.mainloop()
© 2024 OneMinuteCode. All rights reserved.