Калькулятор напряжения — Python tkinter

#python #tkinter #tk

#python #tkinter #tk

Вопрос:

Anglais

Я хотел бы рассчитать, извлекая данные из текстового поля, но это выдает ошибку:

 Traceback (most recent call last):
  File "C:/Users/#####/Desktop/Python/Calculateur_U_R_I/App_main.py", line 43, in <module>
    exe_button = Button(height=1, width=20, text='Exécuter', command=Calc())
  File "C:/Users/#####/Desktop/Python/Calculateur_U_R_I/App_main.py", line 15, in Calc
    result = text_label_1.get * text_label_2
TypeError: unsupported operand type(s) for *: 'method' and 'Text'

Process finished with exit code 1
 

И код :

 import tkinter
from tkinter import *
from tkinter import Text

help(tkinter.Text.get)

window = Tk()

window.minsize(1200, 400)

def Calc():
    result = text_label_1.get * text_label_2
    print(str(result))


text_label_1: Text = Text(window, height=1, width=10)
text_label_1.grid(row=0, column=2)

text_label_2 = Text(window, height=1, width=10)
text_label_2.grid(row=0, column=4)

name_label_1 = Label(window, height=1, width=10, text='Tension')
name_label_1.grid(row=0, column=0)

name_label_2 = Label(window, height=1, width=10, text=' = ')
name_label_2.grid(row=0, column=1)

name_label_3 = Label(window, height=1, width=10, text=' * ')
name_label_3.grid(row=0, column=3)

name_label_4 = Label(window, height=1, width=10, text=' = ')
name_label_4.grid(row=0, column=5)

name_label_5 = Label(window, height=1, width=10)
name_label_5.grid(row=0, column=6)

exe_button = Button(height=1, width=20, text='Exécuter', command=Calc())
exe_button.grid(row=1, column=5)

window.mainloop()
 

 Ok but what is the index1 ? 




    Traceback (most recent call last):
  File "C:/Users/#####/Desktop/Python/Calculateur_U_R_I/App_main.py", line 47, in <module>
    exe_button = Button(height=1, width=20, text='Exécuter', command=Calc())
  File "C:/Users/#####/Desktop/Python/Calculateur_U_R_I/App_main.py", line 17, in Calc
    r = int(text_label_1.get())
TypeError: get() missing 1 required positional argument: 'index1'
 

Комментарии:

1. Извините за ошибки орфографий, я французский

2. Вы должны сказать result = int(text_label_1.get('1.0','end-1c')) * int(text_label_2.get('1.0','end-1c'))

3. Лучше использовать Entry вместо Text виджета с высотой строки 1.

Ответ №1:

text_label_1.get * text_label_2 — проблема в том, что text_label_1.get это метод (функция), а text_label_2 это текст. Вам нужно получить текст из обеих меток, преобразовать в числа и выполнить вычисления

Комментарии:

1. Может быть, будет лучше, если вы включите код, чтобы показать, как это сделать.

2. Разделите проблему на несколько дополнительных задач. 1) Как получить текст из tkinter Text 2) После выполнения 1 — как преобразовать строку в число?

3. Я не просил объяснений для меня, я просил предоставить лучший ответ с кодом, чтобы OP мог понять.

4. ОК. Вот почему я разбиваю задачу на более мелкие задачи, которые может переварить OP

5. Я думал, что мы должны давать ответы, а не проблемы.