2016-04-09 10 views
1

私は第2ボタン付きの科学計算機を書いています。 2番目のボタンの機能とは何ですか?たとえば、sinをsin^-1に変更し、sinボタンのコマンドを変更します。 2番目のボタンをもう一度クリックすると、sin^-1が罪に戻りますPython Tkinter別のボタンをクリックしてボタンのラベルとコマンドを置き換えます。

+0

基本的には、第二ボタン –

+0

をクリックすることにより、バックなどをボタンを置き換えるためにどのようにあなたのコードを貼り付けてくださいので、私たちが見ることができますそれを正しい方向に向けるようにしてください。 – Jonathan

答えて

0

私は計算機を別のフレームを使ってセクションに分割します(1つは計算を示し、もう1つは2つの関数を持たないボタン最後に2つの機能を持つボタン)。 私はそれを分割する理由は、オブジェクトを破棄して新しいオブジェクトを分割することで、特定のボタンではなく必要なフレームを破壊することができるということです(コードが少なくて済みます)。また、私は3つのGUIのdefsを作成するだろう。 1つの機能を持つボタンと計算を示すビットです。 1つは2つの機能(最初の機能)を有するボタンであり、最後に2つの機能(2つ目の機能)を有するボタンである。どちらのGUI gen defを使用するかを決めるには、グローバル変数を持つif文があります。この関数は、2回目のfunctionボタンが呼び出されるたびに変更され、使用するdefを決定します。

ラベルとコマンドの両方の代わりに変更したいコマンドの場合は、etheir 1または2(2番目のボタンがクリックされたときに変更)の変数を持つことになり、定義内(ボタンが呼び出すもの)にif通常のアクション(例えば、cos)または第2のアクション(例えば、cos-1)を行うかどうかを決定するステートメント。ここで

は、以下のコードは、私が最初の段落で説明したもの使用している:

from tkinter import * 

class Calc(Frame): 
    def __init__(self, master): 
     self.modefunction = 1 
     """ Initialize the frame. """ 
     super(Calc,self).__init__(master) 
     self.grid() 

     self.calculations_frm = Frame(self, width=100, height=30)#bg = "red" 
     self.calculations_frm.grid(row = 0, column = 0, columnspan=2) 

     self.buttons_frm = Frame(self, width= 50, height=30,)#bg = "green") 
     self.buttons_frm.grid(row = 1, column = 1) 

     self.buttons_2_functions_1_frm = Frame(self, width=50, height=30)#bg = "blue") 
     self.buttons_2_functions_1_frm.grid(row = 1, column = 0) 
     self.create_GUI() 

    def create_show_calculations(self): 
     self.calculation_lbl = Label(self.calculations_frm, text = "will show caluclations here").pack() 

    def create_buttons(self): 
     #mc stands for mode change 
     self.mode_change_btn = Button(self.buttons_frm, text = "mc", command = self.mode_change, height = 1, width = 5) 
     self.mode_change_btn.grid(row = 0,column = 0) 

     self.plus_btn = Button(self.buttons_frm, text = "plus", height = 1, width = 5) 
     self.plus_btn.grid(row = 1,column = 0) 

    def create_GUI(self): 
     self.create_show_calculations() 
     self.create_buttons() 
     self.create_1_function_gui() 


    def create_1_function_gui(self): 
     self.tan_btn = Button(self.buttons_2_functions_1_frm, text = "tan", height = 1, width = 5) 
     self.tan_btn.grid(row = 0,column = 0) 

     self.san_btn = Button(self.buttons_2_functions_1_frm, text = "san", height = 1, width = 5) 
     self.san_btn.grid(row = 0,column = 1) 

     self.coz_btn = Button(self.buttons_2_functions_1_frm, text = "coz", height = 1, width = 5) 
     self.coz_btn.grid(row = 1,column = 0) 

    def create_2_function_gui(self): 
     self.buttons_2_functions_2_frm = Frame(self, width=50, height=30)#bg = "blue") 
     self.buttons_2_functions_2_frm.grid(row = 1, column = 0) 

     self.inverse_tan_btn = Button(self.buttons_2_functions_2_frm, text = "tan-1", height = 1, width = 5) 
     self.inverse_tan_btn.grid(row = 0,column = 0) 

     self.inverse_san_btn = Button(self.buttons_2_functions_2_frm, text = "san-1", height = 1, width = 5) 
     self.inverse_san_btn.grid(row = 0,column = 1) 

     self.inverse_coz_btn = Button(self.buttons_2_functions_2_frm, text = "coz-1", height = 1, width = 5) 
     self.inverse_coz_btn.grid(row = 1,column = 0) 

    def mode_change(self): 
     if self.modefunction == 1: 
      self.buttons_2_functions_1_frm.destroy() 
      self.modefunction = 2 
      self.buttons_2_functions_2_frm = Frame(self, width=50, height=30)#bg = "blue") 
      self.buttons_2_functions_2_frm.grid(row = 1, column = 0) 
      self.create_2_function_gui() 
     else: 
      self.buttons_2_functions_2_frm.destroy() 
      self.modefunction = 1 
      self.buttons_2_functions_1_frm = Frame(self, width=50, height=30)#bg = "blue") 
      self.buttons_2_functions_1_frm.grid(row = 1, column = 0) 
      self.create_1_function_gui() 

root = Tk() 
root.title("booking system") 
root.geometry("500x500") 
root.configure(bg="white") 
app = Calc(root) 

root.mainloop() 
+0

ありがとう、ありがとうございました:) –

+0

コードが追加されました – ryanmoir