RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-607645

Владимир Лунёв's questions

Martin Hope
Владимир Лунёв
Asked: 2024-11-07 12:59:59 +0000 UTC

在 Tkinter 中计算平均值

  • 6

我有10 个输入字段,其中应显示设备读数。之后,计算平均值。

问题:

如果所有 10 个字段均已填写,则计算将正确执行 - 10 个字段的总和除以10。如何确保仅填写3 个或n 个字段时,其中指示的金额除以填充字段的数量?

代码:

import tkinter as tk
from tkinter import ttk
from tkinter import *
import os
from docxtpl import DocxTemplate


class ReportMain(tk.Tk):
    """docstring for MainWindow"""

    def __init__(self):
        super().__init__()
        self.title("")
        self.configure(bg='palegreen')
        self.geometry('880x650+100+100')
        self.resizable(False, False)
        self.style = ttk.Style()
        self.style.configure(".", background="aliceblue", foreground="black")

        # Создание рамки:

        self.frame = tk.Frame(self, bg='aliceblue', bd=2)
        c = Canvas(self.frame, bg='aliceblue')
        c.config(width=845, height=635)
        c.pack(side=LEFT)
        c.bind_all("<MouseWheel>", lambda event: c.yview_scroll(int(-1 * (event.delta / 120)), "units"))

        def innerFrameGo(_):
            c.configure(scrollregion=c.bbox('all'))

        self.tkp_frm = tk.Frame(c, background='aliceblue')
        self.tkp_frm.bind("<Configure>", innerFrameGo)
        self.tkp_frm_id = c.create_window(0, 0, window=self.tkp_frm, anchor=NW, width=1000, height=2500)
        # self.tkp_frm.pack(fill='x')
        Scrb = Scrollbar(self.frame, orient=VERTICAL)
        Scrb.pack(side=RIGHT, fill=Y)
        c.configure(yscrollcommand=Scrb.set)
        Scrb.config(command=c.yview)
        self.frame.pack()

        # ИСХОДНЫЕ ДАННЫЕ:
        self.ibd = ttk.Label(self.tkp_frm, text='ВВОД ИСХОДНЫХ ДАННЫХ:')
        self.ibd.grid(row=2, column=2)
        self.table1 = ttk.Label(self.tkp_frm, text='Таблица №1: ', font=('Calibri', 12, 'bold'))
        self.table1.grid(row=14, column=1, sticky='w', ipadx=20, pady=5, padx=15)

        # Блок №1:
        def auto_update1(*args):
            try:
                value = float(self.devicereadings_ent.get().replace(',', '.'))
                result = value
                self.str2_var.set(f"{result:.2f}")
            except ValueError:
                self.str2_var.set("")

        self.devicereadings = ttk.Label(self.tkp_frm, text='показания №1 : ', font=('Calibri', 11, 'bold'))
        self.devicereadings.grid(row=19, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str1_var = tk.StringVar()
        self.devicereadings_ent = ttk.Entry(self.tkp_frm, textvariable=self.str1_var)
        self.devicereadings_ent.grid(row=19, column=2, columnspan=2, ipadx=110)
        self.devicereadings_ent.insert(0, "0")

        self.arithmeticmean = ttk.Label(self.tkp_frm, text='Результат: ', font=('Calibri', 11, 'bold'))
        self.arithmeticmean.grid(row=20, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str2_var = tk.StringVar()
        self.arithmeticmean_ent = ttk.Entry(self.tkp_frm, textvariable=self.str2_var, state="readonly")
        self.arithmeticmean_ent.grid(row=20, column=2, columnspan=2, ipadx=110)
        self.str1_var.trace_add("write", auto_update1)

        # Блок №2:
        def auto_update2(*args):
            try:
                value2 = float(self.devicereadings2_ent.get().replace(',', '.'))
                result2 = value2
                self.str4_var.set(f"{result2:.2f}")
            except ValueError:
                self.str4_var.set("")

        self.devicereadings2 = ttk.Label(self.tkp_frm, text='показания №2 : ', font=('Calibri', 11, 'bold'))
        self.devicereadings2.grid(row=22, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str3_var = tk.StringVar()
        self.devicereadings2_ent = ttk.Entry(self.tkp_frm, textvariable=self.str3_var)
        self.devicereadings2_ent.grid(row=22, column=2, columnspan=2, ipadx=110)
        self.devicereadings2_ent.insert(0, "0")

        self.arithmeticmean2 = ttk.Label(self.tkp_frm, text='Результат : ', font=('Calibri', 11, 'bold'))
        self.arithmeticmean2.grid(row=23, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str4_var = tk.StringVar()
        self.arithmeticmean2_ent = ttk.Entry(self.tkp_frm, textvariable=self.str4_var, state="readonly")
        self.arithmeticmean2_ent.grid(row=23, column=2, columnspan=2, ipadx=110)
        self.str3_var.trace_add("write", auto_update2)

        # Блок №3:
        def auto_update3(*args):
            try:
                value3 = float(self.devicereadings3_ent.get().replace(',', '.'))
                result3 = value3
                self.str6_var.set(f"{result3:.2f}")
            except ValueError:
                self.str6_var.set("")

        self.devicereadings3 = ttk.Label(self.tkp_frm, text='показания №3 : ', font=('Calibri', 11, 'bold'))
        self.devicereadings3.grid(row=25, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str5_var = tk.StringVar()
        self.devicereadings3_ent = ttk.Entry(self.tkp_frm, textvariable=self.str5_var)
        self.devicereadings3_ent.grid(row=25, column=2, columnspan=2, ipadx=110)
        self.devicereadings3_ent.insert(0, "0")

        self.arithmeticmean3 = ttk.Label(self.tkp_frm, text='Результат : ', font=('Calibri', 11, 'bold'))
        self.arithmeticmean3.grid(row=26, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str6_var = tk.StringVar()
        self.arithmeticmean3_ent = ttk.Entry(self.tkp_frm, textvariable=self.str6_var, state="readonly")
        self.arithmeticmean3_ent.grid(row=26, column=2, columnspan=2, ipadx=110)
        self.str5_var.trace_add("write", auto_update3)

        # Блок №4:
        def auto_update4(*args):
            try:
                value4 = float(self.devicereadings4_ent.get().replace(',', '.'))
                result4 = value4
                self.str8_var.set(f"{result4:.2f}")
            except ValueError:
                self.str8_var.set("")

        self.devicereadings4 = ttk.Label(self.tkp_frm, text='показания №4 : ', font=('Calibri', 11, 'bold'))
        self.devicereadings4.grid(row=28, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str7_var = tk.StringVar()
        self.devicereadings4_ent = ttk.Entry(self.tkp_frm, textvariable=self.str7_var)
        self.devicereadings4_ent.grid(row=28, column=2, columnspan=2, ipadx=110)
        self.devicereadings4_ent.insert(0, "0")

        self.arithmeticmean4 = ttk.Label(self.tkp_frm, text='Результат : ', font=('Calibri', 11, 'bold'))
        self.arithmeticmean4.grid(row=29, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str8_var = tk.StringVar()
        self.arithmeticmean4_ent = ttk.Entry(self.tkp_frm, textvariable=self.str8_var, state="readonly")
        self.arithmeticmean4_ent.grid(row=29, column=2, columnspan=2, ipadx=110)
        self.str7_var.trace_add("write", auto_update4)

        # Блок №5:
        def auto_update5(*args):
            try:
                value5 = float(self.devicereadings5_ent.get().replace(',', '.'))
                result5 = value5
                self.str10_var.set(f"{result5:.2f}")
            except ValueError:
                self.str10_var.set("")

        self.devicereadings5 = ttk.Label(self.tkp_frm, text='показания №5 : ', font=('Calibri', 11, 'bold'))
        self.devicereadings5.grid(row=31, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str9_var = tk.StringVar()
        self.devicereadings5_ent = ttk.Entry(self.tkp_frm, textvariable=self.str9_var)
        self.devicereadings5_ent.grid(row=31, column=2, columnspan=2, ipadx=110)
        self.devicereadings5_ent.insert(0, "0")

        self.arithmeticmean5 = ttk.Label(self.tkp_frm, text='Результат : ', font=('Calibri', 11, 'bold'))
        self.arithmeticmean5.grid(row=32, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str10_var = tk.StringVar()
        self.arithmeticmean5_ent = ttk.Entry(self.tkp_frm, textvariable=self.str10_var, state="readonly")
        self.arithmeticmean5_ent.grid(row=32, column=2, columnspan=2, ipadx=110)
        self.str9_var.trace_add("write", auto_update5)

        # Блок №6:
        def auto_update6(*args):
            try:
                value6 = float(self.devicereadings6_ent.get().replace(',', '.'))
                result6 = value6
                self.str12_var.set(f"{result6:.2f}")
            except ValueError:
                self.str12_var.set("")

        self.devicereadings6 = ttk.Label(self.tkp_frm, text='показания №6 : ', font=('Calibri', 11, 'bold'))
        self.devicereadings6.grid(row=34, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str11_var = tk.StringVar()
        self.devicereadings6_ent = ttk.Entry(self.tkp_frm, textvariable=self.str11_var)
        self.devicereadings6_ent.grid(row=34, column=2, columnspan=2, ipadx=110)
        self.devicereadings6_ent.insert(0, "0")

        self.arithmeticmean6 = ttk.Label(self.tkp_frm, text='Результат : ', font=('Calibri', 11, 'bold'))
        self.arithmeticmean6.grid(row=35, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str12_var = tk.StringVar()
        self.arithmeticmean6_ent = ttk.Entry(self.tkp_frm, textvariable=self.str12_var, state="readonly")
        self.arithmeticmean6_ent.grid(row=35, column=2, columnspan=2, ipadx=110)
        self.str11_var.trace_add("write", auto_update6)

        # Блок №7:
        def auto_update7(*args):
            try:
                value7 = float(self.devicereadings7_ent.get().replace(',', '.'))
                result7 = value7
                self.str14_var.set(f"{result7:.2f}")
            except ValueError:
                self.str14_var.set("")

        self.devicereadings7 = ttk.Label(self.tkp_frm, text='показания №7 : ', font=('Calibri', 11, 'bold'))
        self.devicereadings7.grid(row=37, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str13_var = tk.StringVar()
        self.devicereadings7_ent = ttk.Entry(self.tkp_frm, textvariable=self.str13_var)
        self.devicereadings7_ent.grid(row=37, column=2, columnspan=2, ipadx=110)
        self.devicereadings7_ent.insert(0, "0")

        self.arithmeticmean7 = ttk.Label(self.tkp_frm, text='Результат : ', font=('Calibri', 11, 'bold'))
        self.arithmeticmean7.grid(row=38, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str14_var = tk.StringVar()
        self.arithmeticmean7_ent = ttk.Entry(self.tkp_frm, textvariable=self.str14_var, state="readonly")
        self.arithmeticmean7_ent.grid(row=38, column=2, columnspan=2, ipadx=110)
        self.str13_var.trace_add("write", auto_update7)

        # Блок №8:
        def auto_update8(*args):
            try:
                value8 = float(self.devicereadings8_ent.get().replace(',', '.'))
                result8 = value8
                self.str16_var.set(f"{result8:.2f}")
            except ValueError:
                self.str16_var.set("")

        self.devicereadings8 = ttk.Label(self.tkp_frm, text='показания №8 : ', font=('Calibri', 11, 'bold'))
        self.devicereadings8.grid(row=40, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str15_var = tk.StringVar()
        self.devicereadings8_ent = ttk.Entry(self.tkp_frm, textvariable=self.str15_var)
        self.devicereadings8_ent.grid(row=40, column=2, columnspan=2, ipadx=110)
        self.devicereadings8_ent.insert(0, "0")

        self.arithmeticmean8 = ttk.Label(self.tkp_frm, text='Результат : ', font=('Calibri', 11, 'bold'))
        self.arithmeticmean8.grid(row=41, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str16_var = tk.StringVar()
        self.arithmeticmean8_ent = ttk.Entry(self.tkp_frm, textvariable=self.str16_var, state="readonly")
        self.arithmeticmean8_ent.grid(row=41, column=2, columnspan=2, ipadx=110)
        self.str15_var.trace_add("write", auto_update8)

        # Блок №9:
        def auto_update9(*args):
            try:
                value9 = float(self.devicereadings9_ent.get().replace(',', '.'))
                result9 = value9
                self.str18_var.set(f"{result9:.2f}")
            except ValueError:
                self.str18_var.set("")

        self.devicereadings9 = ttk.Label(self.tkp_frm, text='показания №9 : ', font=('Calibri', 11, 'bold'))
        self.devicereadings9.grid(row=43, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str17_var = tk.StringVar()
        self.devicereadings9_ent = ttk.Entry(self.tkp_frm, textvariable=self.str17_var)
        self.devicereadings9_ent.grid(row=43, column=2, columnspan=2, ipadx=110)
        self.devicereadings9_ent.insert(0, "0")

        self.arithmeticmean9 = ttk.Label(self.tkp_frm, text='Результат : ', font=('Calibri', 11, 'bold'))
        self.arithmeticmean9.grid(row=44, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str18_var = tk.StringVar()
        self.arithmeticmean9_ent = ttk.Entry(self.tkp_frm, textvariable=self.str18_var, state="readonly")
        self.arithmeticmean9_ent.grid(row=44, column=2, columnspan=2, ipadx=110)
        self.str17_var.trace_add("write", auto_update9)

        # Блок №10:
        def auto_update10(*args):
            try:
                value10 = float(self.devicereadings10_ent.get().replace(',', '.'))
                result10 = value10
                self.str20_var.set(f"{result10:.2f}")
            except ValueError:
                self.str20_var.set("")

        self.devicereadings10 = ttk.Label(self.tkp_frm, text='показания №10 : ', font=('Calibri', 11, 'bold'))
        self.devicereadings10.grid(row=46, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str19_var = tk.StringVar()
        self.devicereadings10_ent = ttk.Entry(self.tkp_frm, textvariable=self.str19_var)
        self.devicereadings10_ent.grid(row=46, column=2, columnspan=2, ipadx=110)
        self.devicereadings10_ent.insert(0, "0")

        self.arithmeticmean9 = ttk.Label(self.tkp_frm, text='Результат : ', font=('Calibri', 11, 'bold'))
        self.arithmeticmean9.grid(row=47, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.str20_var = tk.StringVar()
        self.arithmeticmean9_ent = ttk.Entry(self.tkp_frm, textvariable=self.str20_var, state="readonly")
        self.arithmeticmean9_ent.grid(row=47, column=2, columnspan=2, ipadx=110)
        self.str19_var.trace_add("write", auto_update10)

        # CОЗДАНИЕ КНОПКИ "Расчитать":
        self.add_btn = ttk.Button(self.tkp_frm, text='Расчитать', command=self.convert).grid(row=90, column=2,
                                                                                             sticky='w')
        # Результаты вычислений:
        self.xaver = ttk.Label(self.tkp_frm, text='Среднее арифметическое из N-наблюдений : ',
                               font=('Calibri', 11, 'bold'))
        self.xaver.grid(row=94, column=1, sticky='w', ipadx=20, pady=5, padx=15)
        self.value = tk.StringVar()
        self.xaver_ent = ttk.Entry(self.tkp_frm, textvariable=self.value, state="readonly")
        self.xaver_ent.grid(row=94, column=2, columnspan=2, ipadx=110)

    # ФУНКЦИЯ РАСЧЁТА:
    def convert(self):
        # Получить исходные данные:
        devicereadings = self.devicereadings_ent.get()
        devicereadings = float(devicereadings.replace(',', '.'))
        devicereadings2 = self.arithmeticmean2_ent.get()
        devicereadings2 = float(devicereadings2.replace(',', '.'))
        devicereadings3 = self.devicereadings3_ent.get()
        devicereadings3 = float(devicereadings3.replace(',', '.'))
        devicereadings4 = self.devicereadings4_ent.get()
        devicereadings4 = float(devicereadings4.replace(',', '.'))
        devicereadings5 = self.devicereadings5_ent.get()
        devicereadings5 = float(devicereadings5.replace(',', '.'))
        devicereadings6 = self.devicereadings6_ent.get()
        devicereadings6 = float(devicereadings6.replace(',', '.'))
        devicereadings7 = self.devicereadings7_ent.get()
        devicereadings7 = float(devicereadings7.replace(',', '.'))
        devicereadings8 = self.devicereadings8_ent.get()
        devicereadings8 = float(devicereadings8.replace(',', '.'))
        devicereadings9 = self.devicereadings9_ent.get()
        devicereadings9 = float(devicereadings9.replace(',', '.'))
        devicereadings10 = self.devicereadings10_ent.get()
        devicereadings10 = float(devicereadings10.replace(',', '.'))

        # Расчет данных для вставки в документ:

        x_aver = (
                         devicereadings + devicereadings2 + devicereadings3 + devicereadings4 + devicereadings5 + devicereadings6 + devicereadings7 + devicereadings8 + devicereadings9 + devicereadings10) / 10  # Среднее арифметическое
        # Показать результаты:
        self.value.set(f"{x_aver:.2f}")


if __name__ == "__main__":
    app = ReportMain()
    app.mainloop()
python
  • 1 个回答
  • 51 Views
Martin Hope
Владимир Лунёв
Asked: 2024-11-02 00:53:15 +0000 UTC

如何在另一个输入字段中显示一个 tkinter 输入字段的信息

  • 5

现在我正在创建一个用于计算的小程序。

问题是这样的:有两个字段entry。您需要在第一个字段中输入一个数字,该数字乘以 12% 应出现在第二个字段中。

我可以想象如何通过按下按钮来做到这一点,但我无法弄清楚如何使乘以 12% 的数字立即出现在第二个字段中。

任何人都可以建议一个简单的示例或向我发送一个链接,我可以在其中查看相应的示例吗?

python
  • 2 个回答
  • 30 Views
Martin Hope
Владимир Лунёв
Asked: 2024-09-20 12:57:36 +0000 UTC

在 tkinter 组合框中选择值时,如何将与值相关的信息插入到输入字段中?

  • 5

告诉我如何确保当您在 Combobox tkinter 中选择一个值时,相应的信息会插入到条目小部件中?例如,有一个组合框和一个条目。组合框包含:“1”和“2”。如何确保当选择“1”时,值“红色”被插入到输入字段中,当选择“蓝色”时,值被插入到输入字段中。我将不胜感激任何帮助。

tkinter
  • 1 个回答
  • 18 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5