私は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()
? – zondo
"def converter"以外のものはまだどこか他のところから "コピー"されていますが、私はまだ学習していますが、コードに数式を正しく追加する方法が分からないので、 "def converter"のすべてがわかります。 – Chaost
あなたにはいくつかの問題があります。 'OnPressEnter()'の最初の行に 'self.converter()'を呼び出すべきです。浮動小数点数に文字列を追加することはできません。 '" {}が領域のような何かをする必要があります "#。format(self.convertVariable.get())'。 'convert()'は 'convertVariable'を定義しますが、' convert'を設定します。 'self.convert'を' self.convertVariable'に切り替えます。 'self.entryVariable'は' StringVar'ですので、それを使って数学をする前に変換してください。これは 'float(...)'か 'DoubleVar'だけを使用します。私は何かを忘れたとは思わないが、それがうまくいかないかどうか教えてください。 – zondo