【问题标题】:How to insert text into a tkinter entry created using a list?如何将文本插入使用列表创建的 tkinter 条目中?
【发布时间】:2021-05-26 15:04:00
【问题描述】:

我创建了一个 gui 来计算产品的剂量带剂量,第一个项目运行良好,但我在 msg 框架上收到以下错误:文件“doseband.py”,第 27 行,在 dose_band ent.delete(0, tk.END) AttributeError: 'NoneType' 对象没有属性 'delete'

这里是完整的代码:

import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkinter.messagebox import *

w3 = ([33, 37], [38, 45], [46, 54], [55, 62], [63, 74], [75, 79], [80, 90], [91, 95], [96, 111], [112, 125], [126, 147], [148, 159], [160, 185])
db3 = [100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 400, 450, 500]
w5 = ([40, 44], [45, 47], [48, 52], [53, 57], [58, 66], [67, 75], [76, 88], [89, 95], [66, 109], [110, 115], [116, 133], [134, 155], [156, 177])
db5 = [200, 225, 250, 275, 300, 350, 400, 450, 500, 550, 600, 700, 800]
w10 = ([40, 44], [45, 47], [48, 54], [55, 57], [58, 66], [67, 77], [78, 88], [89, 99], [100, 110], [111, 115], [116, 125], [126, 135], [136, 145], [146, 155], [156, 160])
db10 = [400, 450, 500, 550, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600]

entries = ['Infliximab dose to draw', 'Number of inflximab vials', 'mL if saline to be drawn \n from 250mL bag']
rbuttons = [' 3mg/kg', ' 5mg/kg', '10mg/kg']

def dose_band():
    weight = float(weight_entry.get())
    dose = "n/a"
    peso = var.get()
    if peso == ' 3mg/kg':
        for index, bracket in enumerate(w3):
            if bracket[0] <= weight <= bracket[1]:
                dose = db3[index]
                inf_dose_entry.delete(0, tk.END)
                inf_dose_entry.insert(0, dose)
                inf_dose_entry.insert(tk.END, "mg")
                ent.delete(0, tk.END)
                ent.insert(0, (dose/10))


    if peso == ' 5mg/kg':
        for index, bracket in enumerate(w5):
            if bracket[0] <= weight <= bracket[1]:
                dose = db5[index]
                inf_dose_entry.delete(0, tk.END)
                inf_dose_entry.insert(0, dose)
                inf_dose_entry.insert(tk.END, "mg")
    if peso == '10mg/kg':
        for index, bracket in enumerate(w10):
            if bracket[0] <= weight <= bracket[1]:
                dose = db10[index]
                inf_dose_entry.delete(0, tk.END)
                inf_dose_entry.insert(0, dose)
                inf_dose_entry.insert(tk.END, "mg")


#sets window
window = Tk()
window.title("Dose Banded Infliximab Calculator")

#sets Frames
content = ttk.Frame(window, borderwidth = 5, relief = "ridge", padding =(3, 3, 12, 12))
content.grid(column = 0, row = 0, sticky = (N, S, E, W))
results = ttk.Frame(window, borderwidth = 5, relief = "ridge", padding = (3, 3, 12, 12))
results.grid(column=0, row=1, sticky= (N, S, E, W))
msg = ttk.Frame(window, borderwidth = 5, relief = "ridge", padding = (3, 3, 12, 12))
msg.grid(column = 0, row = 2, sticky = (N, S, E, W))

weight = ttk.Label(content, text = "Weight in kg?    ", font = ('Arial', 15, 'bold')).grid(column = 0, row = 0, sticky = (N, W), padx = 5, pady = 5)
weight_entry = tk.StringVar()
weight_entry = ttk.Entry(content, font = ('Arial', 15), width = 10)
weight_entry.grid(column = 2, row = 0, sticky = (N, S, E, W), padx = 5, pady = 5)

var = tk.StringVar()
for r in range(len(rbuttons)):
    tk.Radiobutton(content, text = rbuttons[r], font = (15), variable = var, value = rbuttons[r], indicatoron = 0).grid(row = (r + 2), column = 2, sticky = (N, S, E, W))

inf_dose = tk.Button(results, text = "Infliximab dose", font = ('Arial', 15, 'bold'), command = dose_band).grid(column = 0, row = 20,sticky = (N, W), padx = 5, pady = 5)
inf_dose_entry = ttk.Entry(results, font = ('Arial', 15), width = 10)
inf_dose_entry.grid(column = 2, row = 20, sticky = (N, S, E, W), padx = 5, pady = 5)


for i in range(len(entries)):
    lab = ttk.Label(msg, text = entries[i], font = ('Arial', 15)).grid(row = i, column = 0, sticky = (N, S, E, W))
    ent = ttk.Entry(msg, font = ('Arial', 15)).grid(row = i, column = 1, sticky = (N, S, E, W))





window.columnconfigure(0, weight = 3)
window.columnconfigure(1, weight = 3)
content.columnconfigure(0, weight = 3)
content.columnconfigure(1, weight = 3)
content.columnconfigure(2, weight = 3)
results.columnconfigure(0, weight = 3)
results.columnconfigure(1, weight = 3)
results.columnconfigure(2, weight = 3)






window.mainloop()

我想要做的是在标签“英夫利昔单抗剂量绘制”旁边的输入框中插入文本,我知道我做的不对,我该如何告诉 tkinter 为我这样做?

【问题讨论】:

  • 你已经创建了这个列表,但我看不到你在哪里使用它。也许我错了,看起来你在这个列表上工作太多了,现在他们什么都不做?不知道
  • 嗨,有问题的列表是这样的:条目 = ['英夫利昔单抗剂量','英夫利昔单抗瓶数','如果要从 250mL 袋中抽取生理盐水,则为毫升'] 和这个是创建条目的循环: for i in range(len(entries)): lab = ttk.Label(msg, text = entries[i], font = ('Arial', 15)).grid(row = i , column = 0, sticky = (N, S, E, W)) ent = ttk.Entry(msg, font = ('Arial', 15)).grid(row = i, column = 1, sticky = (N , S, E, W))

标签: python list tkinter


【解决方案1】:

试试这个。

ent = ttk.Entry(msg, font = ('Arial', 15))
ent.grid(row = i, column = 1, sticky = (N, S, E, W))

【讨论】:

  • 它有效,谢谢,我过去曾被它咬过,应该想到它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
相关资源
最近更新 更多