2016-04-09 4 views
1

Я пишу научный калькулятор со 2-й кнопкой. Какова функция второй кнопки, например, она меняет sin на sin^-1, а также меняет команду кнопки sin; и если вы снова нажмете вторую кнопку, она изменит значение sin^-1 обратно на sinPython Tkinter заменяет ярлык и команду кнопки, нажимая другую кнопку

+0

В принципе, как заменить кнопку назад вперед, нажав на вторую кнопку –

+0

Пожалуйста, вставьте код, чтобы мы могли смотреть на и попытайтесь указать вам в правильном направлении. – Jonathan

ответ

0

Я бы разложил свой калькулятор на секцию с использованием разных кадров (один для отображения вычислений, один с кнопками, которые не будут иметь 2 функции и, наконец, кнопки, которые имеют 2 функции). Причина, по которой я хотел бы разделить ее, состоит в том, что я буду использовать уничтожающие объекты и сделать новые, которые разделяют, означает, что вы можете уничтожить желаемый кадр, а не конкретные кнопки (для этого потребуется меньше кода). Также для этого у меня было бы 3 создания GUI defs. одна из них - кнопки с одной функцией и бит, показывающий вычисления. одна из них - кнопки, которые имеют 2 функции (их первая функция) и, наконец, кнопки, которые имеют 2 функции (их вторая функция). Чтобы решить, какой из GUI gen def использовать, имеет оператор if с глобальной переменной, которая изменяется каждый раз, когда вызывается вторая функциональная кнопка, и которая определяет, какой def использовать.

Если это были просто команды, которые вы хотели изменить вместо обеих меток и команд, у меня была бы переменная, которая является etheir 1 или 2 (изменение при нажатии 2-й кнопки), то в ваших определениях (те, которые вы вызываете ваши кнопки) есть if чтобы принять решение о нормальном действии (например, cos) или втором действии (например, 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

Смежные вопросы