Anonymous
Как перезаписать метку в tkinter после запуска других функций
Сообщение
Anonymous » 12 янв 2025, 16:17
Я впервые создаю графический интерфейс с помощью 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
1736687830
Anonymous
Я впервые создаю графический интерфейс с помощью tkinter(python) и хочу показывать результаты там же, где они были в начале. Когда я запускаю в этом коде функции полностью работают, но я не могу показать результаты в своей метке. Кнопка должна брать данные из записей и передавать их функции с данными из раскрывающегося списка. . Результаты должны перезаписать список as1, as2 = [0, 0] и затем показывать результаты на метке result_1, result_2 Я пытался добавить в функцию "главный" параметр - onclick, но тогда Графический интерфейс запускался без нажатия кнопки. [code]# 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() [/code] Я хочу, чтобы результаты были на том же ярлыке, что и в начале (под кнопкой) Подробнее здесь: [url]https://stackoverflow.com/questions/57908578/how-to-overwrite-label-in-tkinter-after-running-another-functions[/url]