2017-11-30 3 views
0

私は、コードに新しいですし、私は仕事でいくつかのものを解決するために使用する計算のためのいくつかのコードを書いたの追加。「もし」「それから」チェックボタン

私は今、「足」&「メーター」のチェックボタンを追加しようとして立ち往生しています。私はそれらを私の方程式に統合して、それらを手動で事前に変換する必要はありません。私は彼らが2を切り替えるようにする方法を見つけ出すことができたら、私は足のための第2式を追加します。私はこの上で何かを見つけるのは本当に苦労していますので、助けることができるあなたのすべてを願っています

import Tkinter 
import math 
from Tkinter import * 


Lreq = 105 
Dref = 1 

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

    def initialize(self): 
     self.grid() 
     self["bg"] = "grey" 


     ## Title & subtitle labels --------------------------------------- 
     titlelbl = Tkinter.Label(self, text="Wattage Calculator", 
           anchor="center",fg="black",bg="darkorange2") 
     titlelbl.grid(column=0,row=0,columnspan=4,sticky='EW') 




     ## Input Labels -------------------------------------------------- 

     sensitivitylbl = Tkinter.Label(self, text="Loudspeaker sensitivity?", 
           anchor="w",fg="white",bg="SlateGray4") 
     sensitivitylbl.grid(column=0,row=2,columnspan=3,sticky='EW') 

     distancelbl = Tkinter.Label(self, text="Distance from speaker to listening position?", 
           anchor="w",fg="white",bg="SlateGray4") 
     distancelbl.grid(column=0,row=3,columnspan=3,sticky='EW') 

     headroomlbl = Tkinter.Label(self, text="How much headroom for amplifier?", 
           anchor="w",fg="white",bg="SlateGray4") 
     headroomlbl.grid(column=0,row=4,columnspan=3,sticky='EW') 


     wattagelbl = Tkinter.Label(self, text="Total Wattage :", 
           anchor="w",fg="white",bg="SlateGray4") 
     wattagelbl.grid(column=0,row=7,columnspan=3,sticky='EW') 



     ## end of input labels ------------------------------------------------ 

     ## Input Boxes -------------------------------------------------------- 
     #self.sensitivity = Tkinter.DoubleVar() 
     #speakersensitivity = Tkinter.Entry(self,textvariable=self.sensitivity) 
     #speakersensitivity.grid(column=1,row=2,sticky='EW') 

     self.sensitivity = Tkinter.DoubleVar() 
     speakersensitivity = Tkinter.Entry(self,textvariable=self.sensitivity) 
     speakersensitivity.grid(column=3,row=2,sticky='EW') 

     self.distance = Tkinter.DoubleVar() 
     spkdistance = Tkinter.Entry(self,textvariable=self.distance) 
     spkdistance.grid(column=3,row=3,sticky='EW') 

     self.headroom = Tkinter.IntVar() 
     spkheadroom = Tkinter.Entry(self,textvariable=self.headroom) 
     spkheadroom.grid(column=3,row=4, sticky='EW') 


     ## end of input boxes ------------------------------------------------- 

     ## Button 
     button = Tkinter.Button(self,text="C A L C U L A T E", 
           anchor="w",fg="black",bg="green", 
           command=self.OnButtonClick) 
     button.grid(column=0,row=6,columnspan=1) 




     var = BooleanVar() 

     c=Checkbutton(self, text="Meters", variable=BooleanVar(), 
         anchor="center",fg="white",bg="grey25") 
     c.grid(column=2,row=6,columnspan=1) 

     c=Checkbutton(self, text="Feet", variable=BooleanVar(), 
         anchor="center",fg="white",bg="grey25") 
     c.grid(column=3,row=6,columnspan=1) 




     # initialize global variables 
     self.ckbuttonstatus = BooleanVar() 



     ## end of button 

     ## Output labels 
     self.amt = Tkinter.StringVar() 
     amtout = Tkinter.Label(self,textvariable=self.amt, 
           anchor="e",fg="red",bg="gold") 
     amtout.grid(column=3,row=7,columnspan=1,sticky='EW') 

     ## end of output labels ----------------------------------------------- 

     self.grid_columnconfigure(0,weight=2) 
     self.resizable(0,0) 


    def OnButtonClick(self): 
     Lsens = self.sensitivity.get() 
     D2 = self.distance.get() 
     HR = self.headroom.get() 


     exponent = (Lreq-Lsens+20 * math.log10(D2/1)+HR)/10 
     amount = 10 ** exponent 
     self.amt.set(amount) 

if __name__ == "__main__": 
    app = compintapp_tk(None) 
    app.title('Wattage Calculator') 
    app.mainloop() 

はここで、これまでに私のコードです。

+0

? – Nae

+0

'Check Button 'の中で' variable = BooleanVar() 'を使って' {}}ボタンでコード – furas

+0

を正しくフォーマットすると、この 'BooleanVar()'へのアクセス権がないので意味がありません。 'self.var = BooleanVar()'を作成し、 'Checkbutton'に' variable = self.var'を使って 'self.var'にアクセスし、checkbuttonが選択されているかどうか確認する必要があります。 – furas

答えて

1

あなたはmetersまたはfeet

あなたは異なるvalue

self.option = tk.IntVar(value=1) 

c = tk.Radiobutton(self, text="Meters", value=1, variable=self.option) 

c = tk.Radiobutton(self, text="Feet", value=2, variable=self.option) 

そしてOnButtonClickにあなたが選択し得ることができます要素を持つ2 Radiobuttonと1 IntVarを使用するオプションを1つだけ選択するラジオボタンを使用することができます(値1か`2)

selected = self.option.get() 

if selected == 1: 
    print('meters') 
else: 
    print('feet') 

ところで:あなたは時々log()間違った引数を持っているのでtry/exceptを使用して、エラーを与える必要があります。

ところで:我々はLabelまたはEntryのようなクラスのためCamelCaseNamesを使用しています。私たちはlower_case_names使用する他の要素のために - 例えばon_button_click


全コード:正確に質問を_is_何

import Tkinter as tk 
import math 

Lreq = 105 
Dref = 1 

class CompintAppTk(tk.Tk): 

    def __init__(self): 
     tk.Tk.__init__(self) 
     self.title('Wattage Calculator') 
     self.initialize() 
     self.mainloop() 

    def initialize(self): 
     self.grid() 
     self["bg"] = "grey" 

     ## Title & subtitle labels --------------------------------------- 
     titlelbl = tk.Label(self, text="Wattage Calculator", 
           anchor="center", fg="black", bg="darkorange2") 
     titlelbl.grid(column=0, row=0, columnspan=4, sticky='EW') 

     ## Input Labels -------------------------------------------------- 

     sensitivitylbl = tk.Label(self, text="Loudspeaker sensitivity?", 
           anchor="w", fg="white", bg="SlateGray4") 
     sensitivitylbl.grid(column=0,row=2,columnspan=3,sticky='EW') 

     distancelbl = tk.Label(self, text="Distance from speaker to listening position?", 
           anchor="w", fg="white", bg="SlateGray4") 
     distancelbl.grid(column=0, row=3, columnspan=3, sticky='EW') 

     headroomlbl = tk.Label(self, text="How much headroom for amplifier?", 
           anchor="w", fg="white", bg="SlateGray4") 
     headroomlbl.grid(column=0,row=4, columnspan=3, sticky='EW') 

     wattagelbl = tk.Label(self, text="Total Wattage :", 
           anchor="w", fg="white", bg="SlateGray4") 
     wattagelbl.grid(column=0, row=7, columnspan=3, sticky='EW') 

     ## end of input labels ------------------------------------------------ 

     ## Input Boxes -------------------------------------------------------- 
     #self.sensitivity = tk.DoubleVar() 
     #speakersensitivity = tk.Entry(self,textvariable=self.sensitivity) 
     #speakersensitivity.grid(column=1,row=2,sticky='EW') 

     self.sensitivity = tk.DoubleVar() 
     speakersensitivity = tk.Entry(self, textvariable=self.sensitivity) 
     speakersensitivity.grid(column=3, row=2, sticky='EW') 

     self.distance = tk.DoubleVar() 
     spkdistance = tk.Entry(self, textvariable=self.distance) 
     spkdistance.grid(column=3, row=3, sticky='EW') 

     self.headroom = tk.IntVar() 
     spkheadroom = tk.Entry(self, textvariable=self.headroom) 
     spkheadroom.grid(column=3, row=4, sticky='EW') 

     ## end of input boxes ------------------------------------------------- 

     ## Button 
     button = tk.Button(self,text="C A L C U L A T E", 
           anchor="w", fg="black", bg="green", 
           command=self.on_button_click) 
     button.grid(column=0, row=6) 

     # initialize global variables 
     self.option = tk.IntVar(value=1) 

     c = tk.Radiobutton(self, text="Meters", value=1, variable=self.option, 
         anchor="center", fg="grey25", bg="white") 
     c.grid(column=2, row=6) 

     c = tk.Radiobutton(self, text="Feet", value=2, variable=self.option, 
         anchor="center", fg="grey25", bg="white") 
     c.grid(column=3, row=6) 

     ## end of button 

     ## Output labels 
     self.amt = tk.StringVar(self) 
     amtout = tk.Label(self, textvariable=self.amt, 
           anchor="e", fg="red", bg="gold") 
     amtout.grid(column=3, row=7, sticky='EW') 

     ## end of output labels ----------------------------------------------- 

     self.grid_columnconfigure(0, weight=2) 
     self.resizable(0,0) 


    def on_button_click(self): 
     Lsens = self.sensitivity.get() 
     D2 = self.distance.get() 
     HR = self.headroom.get() 

     selected = self.option.get() 

     if selected == 1: 
      print('meters') 
     else: 
      print('feet') 

     try:  
      exponent = (Lreq-Lsens+20 * math.log10(D2/1)+HR)/10 
      amount = 10 ** exponent 
      self.amt.set(amount) 
     except Exception as e: 
      print(e) 

if __name__ == "__main__": 
    app = CompintAppTk() 
+0

驚くばかり!ありがとうございました! – DiFino

関連する問題