import sys
from tkinter import *
class C2F(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Convertor Celsius/Fahrenheit")
self.pack(fill=BOTH, expand=1)
# Meniul superior cu File>Exit si Help>About
menuBar= Menu(self.parent)
self.parent.config(menu=menuBar)
fileMenu= Menu(menuBar)
fileMenu.add_command(label="Exit", command = self.onExit)
menuBar.add_cascade(label="File", menu=fileMenu)
# Adaugare butoane http://effbot.org/tkinterbook/grid.htm
"""
Label(self.parent, text="First").grid(row=0, column =0)
Label(self.parent, text="First").grid(row=1, column = 0)
"""
labelframe = LabelFrame(self.parent, text="Celsius/Fahrenheit")
labelframe.pack(fill="both", expand="yes")
celsuisLabel = Label(labelframe, text="Celsius")
fahrenheitLabel = Label(labelframe, text="Fahrenheit")
celsuisLabel.grid(row=0, column=0)
fahrenheitLabel.grid(row=1, column =0)
self.celsius = StringVar()
self.fahrenheit = StringVar()
self.celsiusEntry=Entry(labelframe, bd=5,textvariable=self.celsius)
self.celsiusEntry.grid(row=0, column=1)
self.fahrenheitEntry=Entry(labelframe, bd=5,textvariable=self.fahrenheit)
self.fahrenheitEntry.grid(row=1, column=1)
calcButon = Button(labelframe, text="Calculeaza", command=self.Calculeaza)
calcButon.grid(row=1, column=2)
def onExit(self):
self.parent.quit()
def Calculeaza(self):
cgrade =self.celsius.get()
if cgrade == '':
self.fahrenheit.set('')
else:
cgrade=float(cgrade)
fgrade=(cgrade-32)/1.8
self.fahrenheit.set(str(fgrade))
def main():
root= Tk()
root.geometry("350x350+300+300")
app= C2F(root)
#Label(root, text="First").grid(row=0, column =0)
root.mainloop()
if __name__ == "__main__": main()`
修正:
1-不需要创建全局变量。只需使用self创建对它的引用。
2-要操作Entry小部件中的数据,您需要首先创建一个变量(StringVar或IntVar或DoubleVar,它们是python变量的tkinter等价物)。一旦设置了变量,您需要将其“映射”到条目小部件。这样做将使您能够以编程方式获取或设置条目小部件内容。在
干杯:)