2016-06-01 13 views
0

複数の変数をtkinterメッセージボックスにバインドしようとしています。これは可能ですか?私は一緒に入れていくつかのサンプルコードを持っているプラ​​スエラーコードです。複数の変数をtkinterメッセージボックスにバインドすることができます

lines = ['Principal Amount: %s', 'Rate: %s', 'Time: %s years.', 'Compounded: %s times a year.'] % (principal, rate, time, compound) 
    tkinter.messagebox.showinfo('Compound Interest Result:', "\n".join(lines)) 

そして、それはこのエラーを返します。

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/tkinter/__init__.py", line 1549, in __call__ 
    return self.func(*args) 
    File "/Users/---/Documents/test.py", line 16, in compoundInterest 
    lines = ['Principal Amount: %s', 'Rate: %s', 'Time: %s years.', 'Compounded: %s times a year.'] % (principal, rate, time, compound) 
TypeError: unsupported operand type(s) for %: 'list' and 'tuple' 

残念ながら研究を通して、私はそれは単なる可能性がありますについて気づいていないしていますので、正しくメッセージボックスに変数をバインドする方法を示して何かを見つけることができませんでした。私はそれを聞くために開いている別の方法がある場合!

答えて

3

問題は、メッセージボックスではなくエラーメッセージで述べたようにラインのあなたの定義とではありません(私はPythonとTkinterのに新しいですので注意してください):

TypeError: unsupported operand type(s) for %: 'list' and 'tuple' 

この作品:

tkinter.messagebox.showinfo('Compound Interest Result:', "\n".join(["test1","test2","test3"])) 

により、たとえば行うことができますラインを作成するには:

sList=['Principal Amount: {}', 'Rate: {}', 'Time: {} years.', 'Compounded: {} times a year.'] 
valueList=['test1', 'test2','test3','test4'] 
lines = [s.format(value) for s,value in zip(sList,valueList)] 
+0

ありがとうございました!チャームのように働いた! – Lachie

関連する問題