Как перезаписать метку в tkinter после запуска других функцийPython

Программы на Python
Ответить
Anonymous
 Как перезаписать метку в tkinter после запуска других функций

Сообщение Anonymous »

Я впервые создаю графический интерфейс с помощью tkinter(python) и хочу показывать результаты там же, где они были в начале.
Когда я запускаю в этом коде функции полностью работают, но я не могу показать результаты в своей метке.
Кнопка должна брать данные из записей и передавать их функции с данными из раскрывающегося списка. .
Результаты должны перезаписать список as1, as2 = [0, 0] и затем показывать результаты на метке result_1, result_2
Я пытался добавить в функцию "главный" параметр - onclick, но тогда Графический интерфейс запускался без нажатия кнопки.

Код: Выделить всё

# coding=utf-8
from tkinter import *

def function_1(h, eta_bet):
print(h, eta_bet)
return h, eta_bet

def calculated_value_concrete(class_concrete):  # could be 20/25
eta_bet = class_concrete
return eta_bet

class Menu:
def __init__(self, master):
container = Label(master, bg="#003366")
container.pack()

menu_bg = Label(container, bg="#003366", fg="white", pady=15)
countings_bg = Label(container)

self.button1 = Button(menu_bg, text="Zbrojenie symetryczne", command=lambda: self.onclick(1, countings_bg),
width=20)

menu_bg.pack(side=LEFT, fill=Y)

self.button1.pack()

def onclick(self, args, countings_bg):
if args == 1:
countings_bg.pack()
ZbrojenieSymetryczne(countings_bg)

class ZbrojenieSymetryczne:
def __init__(self, master):
self.desc_1 = Label(master, text="Wysokość przekroju h [cm]")
self.desc_7 = Label(master, text="Wybór betonu")
self.data_1 = Entry(master, width=6)

var = StringVar()
var.set("Klasa")

self.data_7 = OptionMenu(master, var, "1", "2", command=self.option_menu)
self.data_7.config(width=10)

self.desc_1.grid(row=1, sticky=E)
self.desc_7.grid(row=7, sticky=E)

self.data_1.grid(row=1, column=1)
self.data_7.grid(row=7, column=1, stick="ew")

self.button5 = Button(master, text="Count", command=self.onclick)
self.button5.grid(row=9, columnspan=2, pady=10)

as1, as2 = [0, 0]

self.result_1 = Label(master, text=f"A_s1 = {as1} [cm^2]")
self.result_1.grid(row=12, sticky=E)
self.result_2 = Label(master, text=f"A_s2 = {as2} [cm^2]")
self.result_2.grid(row=13, sticky=E)

def option_menu(self, selection):
self.eta_bet = calculated_value_concrete(selection)
print(self.eta_bet)

def onclick(self):
h = float(self.data_1.get().replace(',', '.')) * 10 ** -2

as1, as2 = function_1(h, self.eta_bet)

self.result_1 = Label(master, text=f"A_s1 = {as1} [cm^2]")
self.result_1.grid(row=12, sticky=E)
self.result_2 = Label(master, text=f"A_s2 = {as2} [cm^2]")
self.result_2.grid(row=13, sticky=E)

root = Tk()
root.title("Obliczanie zbrojenia")

Menu(root)
root.mainloop()
Я хочу, чтобы результаты были на том же ярлыке, что и в начале (под кнопкой)


Подробнее здесь: https://stackoverflow.com/questions/579 ... -functions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»