【发布时间】: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))