gpt4 book ai didi

python - 运行另一个函数后如何覆盖 tkinter 中的标签

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:56 28 4
gpt4 key购买 nike

我第一次使用 tkinter(python) 制作 GUI,我想在同一位置显示结果,即它们在开头的位置。

当我运行此代码时,功能完全正常工作,但我无法在标签中显示结果。

该按钮必须从条目中获取数据,并将其与下拉列表中的数据一起提供给函数。

结果应覆盖列表 as1, as2 = [0, 0],然后在标签 result_1, result_2 上显示结果

我尝试向函数 onclick 添加“master”参数,但随后 GUI 就在没有单击按钮的情况下运行。

# 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()

我希望结果的标签与开头(按钮下方)的标签相同

最佳答案

如果您想更新现有标签的文本,有很多方法可以执行此操作,但也许可以考虑在 onclick 函数中执行此操作,而不是创建新按钮。

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

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

self.result_1['text'] = f"A_s1 = {as1} [cm^2]"
self.result_2['text'] = f"A_s2 = {as2} [cm^2]"

这应该根据 f 字符串设置 result_1 和 result_2 的文本。

关于python - 运行另一个函数后如何覆盖 tkinter 中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57908578/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com