2016-07-29 8 views
-1

私はPythonでGUIを作成するのがとても新しいです。私はどこでも検索していますが、探しているものを見つけることはできません。ユーザーが半径を入力し、プログラムがボタンのクリックまたは入力の助けを借りてラベル内のその半径の領域を印刷するプログラムを用意したいだけです。ありがとうございます。PythonでGUIにコードを実装する方法

import Tkinter, math 

class calc_tk(Tkinter.Tk): 
def __init__(self,parent): 
    Tkinter.Tk.__init__(self,parent) 
    self.parent = parent 
    self.initialize() 

def initialize(self): 
    self.grid() 

    self.entryVariable = Tkinter.DoubleVar() 
    self.entry = Tkinter.Entry(self,textvariable=self.entryVariable) 
    self.entry.grid(column=0,row=0,sticky='EW') 
    self.entry.bind("<Return>", self.OnPressEnter) 
    self.entryVariable.set(u"Radius") 

    button = Tkinter.Button(self,text=u"Click to convert",command=self.OnButtonClick) 
    button.grid(column=1,row=0) 

    self.labelVariable = Tkinter.StringVar() 
    label = Tkinter.Label(self,textvariable=self.labelVariable,anchor="w",fg="white",bg="gray") 
    label.grid(column=0,row=1,columnspan=2,sticky='EW') 
    self.labelVariable.set(u"Please enter a radius.") 

    self.grid_columnconfigure(0,weight=1) 
    self.resizable(True,False) 
    self.update() 
    self.geometry(self.geometry())  
    self.entry.focus_set() 
    self.entry.selection_range(0, Tkinter.END) 

def OnButtonClick(self): 
    self.labelVariable.set(self.convertVariable.get()) 
    self.entry.focus_set() 
    self.entry.selection_range(0, Tkinter.END) 

def OnPressEnter(self,event): 
    self.converter() 
    self.labelVariable.set(self.convertVariable.get()) 
    self.entry.focus_set() 
    self.entry.selection_range(0, Tkinter.END) 

def converter(self): 
    self.convertVariable(math.pi * self.entryVariable.get()**2) 

if __name__ == "__main__": 
app = calc_tk(None) 
app.title('Radius Converter') 
app.mainloop() 
+0

? – zondo

+0

"def converter"以外のものはまだどこか他のところから "コピー"されていますが、私はまだ学習していますが、コードに数式を正しく追加する方法が分からないので、 "def converter"のすべてがわかります。 – Chaost

+0

あなたにはいくつかの問題があります。 'OnPressEnter()'の最初の行に 'self.converter()'を呼び出すべきです。浮動小数点数に文字列を追加することはできません。 '" {}が領域のような何かをする必要があります "#。format(self.convertVariable.get())'。 'convert()'は 'convertVariable'を定義しますが、' convert'を設定します。 'self.convert'を' self.convertVariable'に切り替えます。 'self.entryVariable'は' StringVar'ですので、それを使って数学をする前に変換してください。これは 'float(...)'か 'DoubleVar'だけを使用します。私は何かを忘れたとは思わないが、それがうまくいかないかどうか教えてください。 – zondo

答えて

1

私はコードを少し修正しました。今度は、あなたが言及したように、ラベルに領域が表示されます。コードを確認してください。間違っていると私に知らせてください。あなたが持っているものと間違って何

import Tkinter, math 
 

 
class calc_tk(Tkinter.Tk): 
 
    def __init__(self,parent): 
 
     Tkinter.Tk.__init__(self,parent) 
 
     self.parent = parent 
 
     self.initialize() 
 

 
    def initialize(self): 
 
     self.grid() 
 

 
     self.entryVariable = Tkinter.StringVar() 
 
     self.entry = Tkinter.Entry(self,textvariable=self.entryVariable) 
 
     self.entry.grid(column=0,row=0,sticky='EW') 
 
     self.entry.bind("<Return>", self.OnPressEnter) 
 
     self.entryVariable.set(u"Radius") 
 

 
     button = Tkinter.Button(self,text=u"Click to convert",command=self.OnButtonClick) 
 
     button.grid(column=1,row=0) 
 

 
     self.labelVariable = Tkinter.StringVar() 
 
     label = Tkinter.Label(self,textvariable=self.labelVariable,anchor="w",fg="white",bg="gray") 
 
     label.grid(column=0,row=1,columnspan=2,sticky='EW') 
 
     self.labelVariable.set(u"Please enter a radius.") 
 

 
     self.grid_columnconfigure(0,weight=1) 
 
     self.resizable(True,False) 
 
     self.update() 
 
     self.geometry(self.geometry())  
 
     self.entry.focus_set() 
 
     self.entry.selection_range(0, Tkinter.END) 
 

 
    def OnButtonClick(self): 
 
     
 
     self.labelVariable.set(str(self.converter())+" is the area.") 
 
     self.entry.focus_set() 
 
     self.entry.selection_range(0, Tkinter.END) 
 

 
    def OnPressEnter(self,event): 
 
     self.labelVariable.set(str(self.converter())+" is the area.") 
 
     self.entry.focus_set() 
 
     self.entry.selection_range(0, Tkinter.END) 
 

 
    def converter(self): 
 
     print self.entryVariable.get() 
 
     return (math.pi * (float(self.entryVariable.get()) * float(self.entryVariable.get()))) 
 

 
if __name__ == "__main__": 
 
    app = calc_tk(None) 
 
    app.title('Radius Converter') 
 
    app.mainloop()

+0

私は変更を適用しましたが、今私は構文エラーを取得し、それは "__name__ ==" __main __ ":' – Chaost

+0

のインデントの問題..私はそれを変更しました。 –

+0

そのコードはコードスニペットとして表示されます。あなたはそれを実行することが可能であることをテストしましたか? –

関連する問題