При выводе messagebox получаю скобки { текст }

Dmitriy-0

Новичок
Пользователь
Мар 29, 2022
4
1
3
Windows10, PyCharm Community Edition 2021.3.3. pip tkinter
при выводе списка в виде строки в окне сообщения появляются скобки. Скрин окна прилагаю. код ниже.
Python:
from tkinter import *
from tkinter import messagebox
import math
import re

# вводим свои данные
user_height = int(input("Введите Ваш рост: "))
user_age = int(input("Введите Ваш возраст: "))
user_weight = int(input("Введите Ваш вес: "))
#вычисляем идельный вес
def normal_weight(x,y,z):
    c = 50 + abs(0.75*(x - 150)) + abs((y - 20)/4)
    wmin = round(c - 3)
    wmax = round(c + 3)
    if wmin <= z:
        if z <= wmax:
            spisok1 = []
            text1 = ["Ваш вес =", z, " . Он идеален, так как находится в пределах от", wmin, " до ", wmax]
            messagebox.showinfo('Ваш вес', text1 )
        else:
            s = z - wmax
            spisok2 = []
            text2 = ["Ваш вес ", z, " превышает идеальный вес в пределах от " , wmin, " до ", wmax,
                  ". \n Вам надо скинуть" , s , "кг"]
            #text21 = re.sub(r'\([^)]*\)', '', text2) #[0, text2]
            messagebox.showinfo("Ваш вес ", text2 )
    else:
        p = wmin - z
        spisok3 = []
        text3 = ["Ваш вес ", z, " , ", "что ниже идеального веса в пределах от " , wmin, " до ", wmax,
              ". Вам надо лучше питаться и набрать" , p , "кг"]
        #messagebox.showinfo("Ваш вес ", text3[0,1,2,3,4,5,6,7,8,9])
        window_2 = Tk()
        window_2.title("Ваш данные")
        window_2.geometry('300x100')
        lbl = Label(window_2, text=text1[0])
        lbl.grid(column=0, row=0)
        lbl = Label(window_2, text=text1[1])
        lbl.grid(column=1, row=0)
        lbl = Label(window_2, text=text1[2])
        lbl.grid(column=2, row=0)
        lbl = Label(window_2, text=text1[3])
        lbl.grid(column=0, row=1)
        lbl = Label(window_2, text=" ")
        lbl.grid(column=1, row=1)
        lbl = Label(window_2, text=" ")
        lbl.grid(column=2, row=1)
        lbl = Label(window_2, text=text1[4])
        lbl.grid(column=0, row=2)
        lbl = Label(window_2, text=text1[5])
        lbl.grid(column=1, row=2)
        lbl = Label(window_2, text=text1[6])
        lbl.grid(column=2, row=2)
        lbl = Label(window_2, text=text1[7])
        lbl.grid(column=0, row=3)
        lbl = Label(window_2, text=text1[8])
        lbl.grid(column=1, row=3)
        lbl = Label(window_2, text=text1[9])
        lbl.grid(column=2, row=3)
        lbl = Label(window_2, text=" ")
        window_2.mainloop()
    #возвращаем округленный идеальный вес
    #return wmin, wmax

normal_weight(user_height,user_age,user_weight)
 

Вложения

  • Python staples.jpg
    Python staples.jpg
    15,5 КБ · Просмотры: 2

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 599
464
83
ваш код не работает, я незнаю как вы его запустили, переменная text1 не определена
а зачем в делаете список в text1 text2 text3, и потом по индексу что то получаете ниже... не понятно чего хотите добиться

а по поводу скобок, не нужно делать список, можно использовать f строки
text1 = f"Ваш вес = {z}. Он идеален, так как находится в пределах от {wmin} до {wmax}"
 
  • Мне нравится
Реакции: Dmitriy-0

Dmitriy-0

Новичок
Пользователь
Мар 29, 2022
4
1
3
ваш код не работает, я незнаю как вы его запустили, переменная text1 не определена
а зачем в делаете список в text1 text2 text3, и потом по индексу что то получаете ниже... не понятно чего хотите добиться

а по поводу скобок, не нужно делать список, можно использовать f строки
text1 = f"Ваш вес = {z}. Он идеален, так как находится в пределах от {wmin} до {wmax}"
так то код работает, я даже увеличил его и сделал фронтенд и даже *.exe сделал. Все работает ) Но это не важно сейчас, спасибо за подсказку про F-строки, не знал про них.
 

Форум IT Специалистов