Вопрос задан 06.06.2023 в 09:58. Предмет Информатика. Спрашивает Красильников Степан.

Подскажите что не так в этой программе(python) from tkinter import* import tkinter.messagebox

window=tkinter.Tk() window.geometry('400x300') '' Label(window,text='Вага в стартових одиницях').place(x=40,y=20) Label(window,text='Пуди').place(x=20,y=40) Label(window,text='Фунти').place(x=20,y=80) entry1=tkinter.Entry(window).place(x=50,y=40) entry2=tkinter.Entry(window).place(x=50,y=80) puds=tkinter.StringVar() funts=tkinter.StringVar() def button_click(): tkinter.messagebox.showinfo('Кг',float(puds.get())*16,38+float(funts.get())* (1 / 40) * 16.38) but=tkinter.Button(window,text='Обчислити',command=button_click) but.place(x=120,y=170) window.mainloop()
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Поповцев Дима.

В данной программе имеются следующие ошибки:

1. После строки `''` стоит ненужный символ комментария, который нужно удалить, чтобы код не выдавал ошибку синтаксиса.

2. При создании объектов `entry1` и `entry2` с помощью метода `place()` переменные `entry1` и `entry2` получают значение `None`, поэтому их нельзя использовать для получения введенных значений. Нужно создать объекты `Entry` отдельно, а затем разместить их на экране с помощью метода `place()`, например, так:

entry1 = tkinter.Entry(window)

entry1.place(x=50, y=40)

entry2 = tkinter.Entry(window)

entry2.place(x=50, y=80)

3. В функции `button_click()` вызов метода `tkinter.messagebox.showinfo()` записан неправильно. Нужно поместить все выражение в скобки, чтобы передать его в качестве единого аргумента, например, так:

tkinter.messagebox.showinfo('Кг', float(puds.get()) * 16.38 + float(funts.get()) * (1 / 40) * 16.38)

Здесь я также поправил формулу для перевода пудов и фунтов в килограммы.

Итоговый исправленный код:

from tkinter import *

import tkinter.messagebox

window = Tk()

window.geometry('400x300')

Label(window, text='Вага в стартових одиницях').place(x=40, y=20)

Label(window, text='Пуди').place(x=20, y=40)

Label(window, text='Фунти').place(x=20, y=80)

entry1 = Entry(window)

entry1.place(x=50, y=40)

entry2 = Entry(window)

entry2.place(x=50, y=80)

puds = StringVar()

funts = StringVar()

def button_click():

if entry1.get() == '' or entry2.get() == '':

tkinter.messagebox.showerror('Помилка', 'Будь ласка, введіть значення в обидва поля')

else:

tkinter.messagebox.showinfo('Кг', float(entry1.get()) * 0.4095 + float(entry2.get()) * (1 / 40) * 0.4095)

but = Button(window, text='Обчислити', command=button_click)

but.place(x=120, y=170)

window.mainloop()

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

В данной программе есть несколько проблем:

  1. Отсутствует импорт модуля tkinter.messagebox. Необходимо добавить строку import tkinter.messagebox перед созданием окна.

  2. Необходимо использовать отступы для улучшения читаемости кода.

  3. В строке entry1=tkinter.Entry(window).place(x=50,y=40) и entry2=tkinter.Entry(window).place(x=50,y=80) присваивание переменных entry1 и entry2 происходит после вызова метода place(). Таким образом, переменные entry1 и entry2 получат значение None. Чтобы исправить это, следует разделить создание виджета Entry и его размещение на две отдельные строки:

python
entry1 = tkinter.Entry(window) entry1.place(x=50, y=40) entry2 = tkinter.Entry(window) entry2.place(x=50, y=80)
  1. В функции button_click() в строке tkinter.messagebox.showinfo('Кг', float(puds.get())*16,38 + float(funts.get())*(1 / 40) * 16.38) имеется лишний запятая между 16 и 38. Это приведет к синтаксической ошибке. Вероятно, вы хотели записать 16.38 в качестве значения. Чтобы исправить это, замените запятую на точку:
python
tkinter.messagebox.showinfo('Кг', float(puds.get()) * 16.38 + float(funts.get()) * (1 / 40) * 16.38)

Итоговый исправленный код выглядит так:

python
from tkinter import * import tkinter.messagebox window = tkinter.Tk() window.geometry('400x300') Label(window, text='Вага в стартових одиницях').place(x=40, y=20) Label(window, text='Пуди').place(x=20, y=40) Label(window, text='Фунти').place(x=20, y=80) entry1 = tkinter.Entry(window) entry1.place(x=50, y=40) entry2 = tkinter.Entry(window) entry2.place(x=50, y=80) puds = tkinter.StringVar() funts = tkinter.StringVar() def button_click(): tkinter.messagebox.showinfo('Кг', float(puds.get()) * 16.38 + float(funts.get()) * (1 / 40) * 16.38) but = tkinter.Button(window, text='Обчислити', command=button_click) but.place(x=120, y=170) window.mainloop()
0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос