Я пишу научный калькулятор со 2-й кнопкой. Какова функция второй кнопки, например, она меняет sin на sin^-1, а также меняет команду кнопки sin; и если вы снова нажмете вторую кнопку, она изменит значение sin^-1 обратно на sinPython Tkinter заменяет ярлык и команду кнопки, нажимая другую кнопку
ответ
Я бы разложил свой калькулятор на секцию с использованием разных кадров (один для отображения вычислений, один с кнопками, которые не будут иметь 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()
Хорошо, спасибо :) –
код был добавлен – ryanmoir
- 1. Как обновить ярлык в tkinter и python
- 2. Проталкиватель, нажимая на кнопку вложенного элемента кнопки
- 3. Обновите ярлык в tkinter с помощью кнопки
- 4. Python передает экземпляр кнопки Tkinter в свою собственную команду
- 5. удалите ярлык и кнопку при нажатии кнопки
- 6. Python/Tkinter не обновляет ярлык
- 7. Невозможно добавить ярлык в python Tkinter
- 8. Обновите ярлык в Tkinter при нажатии кнопки
- 9. Ярлык и кнопки перекрываются при использовании разных классов, tkinter
- 10. Кнопка нажатия кнопки Tkinter и клавиша «возврат»
- 11. Python Tkinter: Удалить ярлык не работает
- 12. Скрыть ярлык при нажатии кнопки в Python
- 13. Радио кнопки tkinter python
- 14. javascript кнопки, запускающие другую кнопку
- 15. Python: виджет кнопки в Tkinter
- 16. Обратный вызов кнопки Python Tkinter
- 17. Python tkinter: Замена кнопки изображения меткой изображения нажатием кнопки
- 18. Кнопки Python Tkinter - нет текста
- 19. Python Tkinter не создает кнопку
- 20. Ярлык Python tkinter не может быть вызван
- 21. Python Tkinter ярлык виджет мыши над
- 22. Ярлык не обновляется в python tkinter
- 23. Радио кнопки в python 3 и tkinter
- 24. Ошибка Python Tkinter: «Ярлык не имеет __call__method»
- 25. Python 3 - команды кнопки Tkinter
- 26. Команда кнопки Python TkInter Return
- 27. Python tkinter: кнопки не отображаются
- 28. Javascript, нажимая кнопку в интервале
- 29. Python Tkinter: текстовое поле введите команду
- 30. Python/Tkinter сила ожидания на нажатия кнопки
В принципе, как заменить кнопку назад вперед, нажав на вторую кнопку –
Пожалуйста, вставьте код, чтобы мы могли смотреть на и попытайтесь указать вам в правильном направлении. – Jonathan