Esempio n. 1
0
	def __init__(self,parent):
		LabelFrame.__init__(self, parent, borderwidth=0)

		entryWidth = 7
		xPad1 = 30
		xPad2 = 5

		self.errorXLowerLimitL = Label(self)
		self.errorXLowerLimitE = CustomEntry(self,width=entryWidth,justify="right")
		self.errorXLowerLimitL.grid(row=0,column=0,padx=(10,xPad2),pady=5,sticky="W")
		self.errorXLowerLimitE.grid(row=0,column=1,padx=(xPad2,xPad1),pady=5)

		self.errorXUpperLimitL = Label(self)
		self.errorXUpperLimitE = CustomEntry(self,width=entryWidth,justify="right")
		self.errorXUpperLimitL.grid(row=1,column=0,padx=(10,xPad2),pady=5,sticky="W")
		self.errorXUpperLimitE.grid(row=1,column=1,padx=(xPad2,xPad1),pady=5)

		self.errorYLowerLimitL = Label(self)
		self.errorYLowerLimitE = CustomEntry(self,width=entryWidth,justify="right")
		self.errorYLowerLimitL.grid(row=0,column=2,padx=(xPad1,xPad2),pady=5,sticky="W")
		self.errorYLowerLimitE.grid(row=0,column=3,padx=(xPad2,xPad1),pady=5)

		self.errorYUpperLimitL = Label(self)
		self.errorYUpperLimitE = CustomEntry(self,width=entryWidth,justify="right")
		self.errorYUpperLimitL.grid(row=1,column=2,padx=(xPad1,xPad2),pady=5,sticky="W")
		self.errorYUpperLimitE.grid(row=1,column=3,padx=(xPad2,xPad1),pady=5)

		self.errorResolutionL = Label(self,text="Resolution: ")
		self.errorResolutionE = CustomEntry(self,width=entryWidth,justify="right")
		self.errorResolutionE.insert(0,ERROR_SURFACE_DEFAULT_RESOLUTION)
		self.errorResolutionL.grid(row=0,column=4,padx=(xPad1,xPad2),pady=5,sticky="W")
		self.errorResolutionE.grid(row=0,column=5,padx=(xPad2,xPad1),pady=5,sticky="E")

		self.errorSurfaceB = Button(self,text=" Calculate error surface ")
		self.errorSurfaceB.grid(row=1,column=4,columnspan=2,padx=(xPad1,xPad1),sticky="EW")
		self.errorSurfaceB.configure(state=tkinter.ACTIVE)
Esempio n. 2
0
	def __init__(self,parent, padX, padY):

		LabelFrame.__init__(self,parent,borderwidth=0)

		# Total volume
		self.totalEstimatedVolume_L = Label(self,text="Estimated total volume (km\u00B3): ")
		self.totalEstimatedVolume_E = CustomEntry(self,width=10,justify="right")
		self.totalEstimatedVolume_E.setUserEditable(False)
		self.totalEstimatedVolume_E.grid(row=0,column=1,padx=10,pady=padY,sticky="E")
		self.totalEstimatedVolume_L.grid(row=0,column=0,sticky="W",padx=10)

		# Relative squared error
		self.relativeSquaredError_L = Label(self,text="Mean relative squared error: ")
		self.relativeSquaredError_L.grid(row=1,column=0,sticky="W",padx=10,pady=padY)
		self.relativeSquaredError_E = CustomEntry(self,width=10,justify="right")
		self.relativeSquaredError_E.grid(row=1,column=1,padx=10,sticky="E")
		self.relativeSquaredError_E.setUserEditable(False)

		# Equation
		self.equation_L = Label(self,text="Equation: ")
		self.equation_E = CustomEntry(self,width=10,justify="right")
		self.equation_E.setUserEditable(False)

		# General
		self.parameters_L = Label(self,text="Parameters:")
		self.calculate_B = Button(self,text="Recalculate",width=12)
		self.reset_B = Button(self,text="Reset",width=8)



		#########
		## Exp ##
		#########

		# Segment combobox
		self.expSeg_CB = Combobox(self,state="readonly",width=10)

		# Segment volume
		self.expSegVolume_L = Label(self,text="Segment volume (km\u00B3): ")
		self.expSegVolume_E = CustomEntry(self, width=10, justify="right")
		self.expSegVolume_E.setUserEditable(False)

		# Segment start
		self.expSegStartLimit_L = Label(self,text="Start of segment: ")
		self.expSegStartLimit_E = NumericEntry(self, width=10, justify="right")
		self.expSegStartLimit_E.setSF(NUMBER_OF_SF)

		# Segment end
		self.expSegEndLimit_L = Label(self,text="End of segment: ")
		self.expSegEndLimit_E = NumericEntry(self, width=10, justify="right")
		self.expSegEndLimit_E.setSF(NUMBER_OF_SF)

		# Segment coefficient
		self.expSegCoefficent_L = Label(self,text="Segment coefficient, c: ")
		self.expSegCoefficent_E = NumericEntry(self, width=10, justify="right")
		self.expSegCoefficent_E.setSF(NUMBER_OF_SF)

		# Segment exponent
		self.expSegExponent_L = Label(self,text="Segment exponent, m: ")
		self.expSegExponent_E = NumericEntry(self, width=10, justify="right")
		self.expSegExponent_E.setSF(NUMBER_OF_SF)


		#########
		## Pow ##
		#########

		# Coefficient
		self.powCoefficient_L = Label(self,text="Coefficient, c: ")
		self.powCoefficient_E = NumericEntry(self,width=10, justify="right")
		self.powCoefficient_E.setSF(NUMBER_OF_SF)

		# Exponent
		self.powExponent_L = Label(self,text="Exponent, m: ")
		self.powExponent_E = NumericEntry(self,width=10, justify="right")
		self.powExponent_E.setSF(NUMBER_OF_SF)

		# Proximal limit
		self.powProximalLimit_L = Label(self,text="Proximal limit: ")
		self.powProximalLimit_E = NumericEntry(self,width=10, justify="right")
		self.powProximalLimit_E.setSF(NUMBER_OF_SF)

		# Distal limit
		self.powDistalLimit_L = Label(self,text="Distal limit: ")
		self.powDistalLimit_E = NumericEntry(self,width=10, justify="right")
		self.powDistalLimit_E.setSF(NUMBER_OF_SF)

		# Suggested proximal limit
		self.powSuggestedProximalLimit_L = Label(self,text="Suggested proximal limit: ")
		self.powSuggestedProximalLimit_E = CustomEntry(self,width=10, justify="right")
		self.powSuggestedProximalLimit_E.setUserEditable(False)



		#########
		## Wei ##
		#########

		# lambda
		self.weiLambdaL = Label(self,text="Estimated \u03BB: ")
		self.weiLambdaE = NumericEntry(self,width=10, justify="right")
		self.weiLambdaE.setSF(NUMBER_OF_SF)

		# k
		self.weiKL = Label(self,text="Estimated k: ")
		self.weiKE = NumericEntry(self,width=10, justify="right")
		self.weiKE.setSF(NUMBER_OF_SF)

		# theta
		self.weiThetaL = Label(self,text="Estimated \u03B8: ")
		self.weiThetaE = NumericEntry(self,width=10, justify="right")
		self.weiThetaE.setSF(NUMBER_OF_SF)


		self.components = {
			Model.EXP : [
				self.expSeg_CB,
				self.expSegVolume_L, self.expSegVolume_E,
				self.expSegStartLimit_L, self.expSegStartLimit_E,
				self.expSegEndLimit_L, self.expSegEndLimit_E,
				self.expSegCoefficent_L, self.expSegCoefficent_E,
				self.expSegExponent_L, self.expSegExponent_E
			],

			Model.POW : [
				self.powCoefficient_L, self.powCoefficient_E,
				self.powExponent_L, self.powExponent_E,
				self.powProximalLimit_L, self.powProximalLimit_E,
				self.powDistalLimit_L, self.powDistalLimit_E,
				self.powSuggestedProximalLimit_L, self.powSuggestedProximalLimit_E
			],

			Model.WEI : [
				self.weiLambdaL, self.weiLambdaE,
				self.weiKL, self.weiKE,
				self.weiThetaL, self.weiThetaE,
			],

		}
Esempio n. 3
0
    def __init__(self, parent):
        LabelFrame.__init__(self, parent, text="Model", borderwidth=5)

        self.selection = tkinter.IntVar()

        self.exponential = Radiobutton(self,
                                       text="Exponential model",
                                       variable=self.selection,
                                       value=Model.EXP.value,
                                       command=self.changeSelection)
        self.powerlaw = Radiobutton(self,
                                    text="Power law model",
                                    variable=self.selection,
                                    value=Model.POW.value,
                                    command=self.changeSelection)
        self.weibull = Radiobutton(self,
                                   text="Weibull model",
                                   variable=self.selection,
                                   value=Model.WEI.value,
                                   command=self.changeSelection)

        self.exponential.grid(row=0,
                              column=0,
                              sticky="W",
                              padx=10,
                              pady=(self.topPadding, 5))
        self.powerlaw.grid(row=1, column=0, sticky="W", padx=10, pady=5)
        self.weibull.grid(row=2, column=0, sticky="W", padx=10, pady=(5, 0))

        seperator = Separator(self, orient=tkinter.VERTICAL)
        seperator.grid(row=0,
                       column=1,
                       rowspan=3,
                       sticky="NS",
                       padx=(20, 10),
                       pady=(self.topPadding, 0))

        ## Exponential setup

        self.expNumberOfSegments_L = Label(self, text="Number of segments: ")
        self.expNumberOfSegments_E = Entry(self, width=5, justify="right")

        self.expNumberOfSegments_E.insert(
            0, settings.EXP_DEFAULT_NUMBER_OF_SEGMENTS)

        self.expWidgets = [
            self.expNumberOfSegments_L, self.expNumberOfSegments_E
        ]

        ## Power law setup

        self.powProximalLimit_L = Label(self,
                                        text="Proximal limit of integration: ")
        self.powProximalLimit_E = Entry(self, width=5, justify="right")
        self.powDistalLimit_L = Label(self,
                                      text="Distal limit of integration: ")
        self.powDistalLimit_E = Entry(self, width=5, justify="right")

        self.powProximalLimit_E.insert(0, settings.POW_DEFAULT_PROXIMAL_LIMIT)
        self.powDistalLimit_E.insert(0, settings.POW_DEFAULT_DISTAL_LIMIT)

        self.powWidgets = [
            self.powProximalLimit_L, self.powProximalLimit_E,
            self.powDistalLimit_L, self.powDistalLimit_E
        ]

        ## Weibull setup

        self.weiNumberOfRuns_L = Label(self, text="Number of runs: ")
        self.weiNumberOfRuns_E = Entry(self, width=5, justify="right")
        self.weiIterationsPerRun_L = Label(self, text="Iterations per run: ")
        self.weiIterationsPerRun_E = Entry(self, width=5, justify="right")

        self.weiEstimatedTime_L = Label(self, text="Estimated time (s): ")
        self.weiEstimatedTime_E = CustomEntry(self, width=5, justify="right")
        self.weiEstimatedTime_E.setUserEditable(False)

        self.weiLambdaLowerBoundL = Label(self, text="\u03BB lower bound:")
        self.weiLambdaUpperBoundL = Label(self, text="\u03BB upper bound:")
        self.weiLambdaLowerBoundE = Entry(self, width=5, justify="right")
        self.weiLambdaUpperBoundE = Entry(self, width=5, justify="right")

        self.weiKLowerBoundL = Label(self, text="k lower bound:")
        self.weiKUpperBoundL = Label(self, text="k upper bound:")
        self.weiKLowerBoundE = Entry(self, width=5, justify="right")
        self.weiKUpperBoundE = Entry(self, width=5, justify="right")

        self.weiNumberOfRuns_E.insert(0, settings.WEI_DEFAULT_NUMBER_OF_RUNS)
        self.weiIterationsPerRun_E.insert(
            0, settings.WEI_DEFAULT_ITERATIONS_PER_RUN)
        self.weiLambdaLowerBoundE.insert(
            0, settings.WEI_DEFAULT_LAMBDA_LOWER_BOUND)
        self.weiLambdaUpperBoundE.insert(
            0, settings.WEI_DEFAULT_LAMBDA_UPPER_BOUND)
        self.weiKLowerBoundE.insert(0, settings.WEI_DEFAULT_K_LOWER_BOUND)
        self.weiKUpperBoundE.insert(0, settings.WEI_DEFAULT_K_UPPER_BOUND)

        self.weiWidgets = [
            self.weiNumberOfRuns_L, self.weiNumberOfRuns_E,
            self.weiIterationsPerRun_L, self.weiIterationsPerRun_E,
            self.weiEstimatedTime_L, self.weiEstimatedTime_E,
            self.weiLambdaLowerBoundL, self.weiLambdaUpperBoundL,
            self.weiLambdaLowerBoundE, self.weiLambdaUpperBoundE,
            self.weiKLowerBoundL, self.weiKUpperBoundL, self.weiKLowerBoundE,
            self.weiKUpperBoundE
        ]

        ## General

        self.currentWidgets = []
        self.selection.set(Model.EXP.value)
        self.changeSelection()