我想構建一個使用Tkinter的羅馬數字轉換器。如果輸入數字,我需要使用一個按鈕將小數轉換爲羅馬數字,如果輸入數字,則將羅馬數字轉換爲小數。如何將兩個功能分配到一個按鈕,並調用與輸入內容相對應的功能?tkinter:分配多個功能到一個按鈕
這是我到目前爲止有:
from tkinter import *
root = Tk()
root.title('Roman numerals')
root.geometry('400x300')
numRomanMap = (('M', 1000), ('CM', 900), ('D', 500), ('CD', 400), ('C', 100), ('XC', 90), ('L', 50), ('XL', 40), ('X', 10), ('IX', 9), ('V', 5), ('IV', 4), ('I', 1))
def roman_number():
roman_string = ''
n = float(eval(ent.get()))
wrongValue = ('Number is out of range')
if not 1 <= n <= 9999:
return wrongValue
for numeral, integer in numRomanMap:
while n >= integer:
roman_string += numeral
n -= integer
print (roman_string)
def decimal_number(s):
dec_number = 0
s = str(eval(ent.get()))
index = []
for i in range(len(s)):
for numeral, integer in numRomanMap:
if s[i] == numeral:
index.append(integer)
index.append(0)
for i in range(len(s)):
if index[i] >= index[i+1]:
dec_number = dec_number + index[i]
else:
dec_number = dec_number - index[i]
print (dec_number)
Convertb = Button(root, text='Convert', command = roman_number)
ent = Entry(root)
ent.pack()
ent.delete(0, END)
ent.insert(0, 'Enter a number')
Convertb.pack()
root.mainloop()
可以使簡單地檢查用戶的輸入的功能,然後將該分支成另外兩個函數,一個用於十進制輸入和其他RN輸入 – Goralight