繁体   English   中英

使用 tkinter 输入框中的变量来选择字典值

[英]Using a variable from a tkinter entry box to select a dictionary value

我对 Python 相当陌生,只使用 tkinter 编写了一个其他程序。 在这个程序中,我试图允许用户在他们正在寻找的输入框中输入元素,并在另一个输入框中输入该元素的同位素。 使用字典显示每个元素的同位素和百分比。 然后我想使用与输入的 dict 和键关联的值来做一些数学运算。 我遇到的问题是,当我运行程序时,它给了我一个 IndexError: string index out of range。 当我将“f = e1.get()”行更改为“f=Ti”时,它会起作用并将dict分配给f,但是当我尝试使用e1中的条目使var f与dict Ti相同时这是行不通的。

from tkinter import *


window=Tk()

window.geometry("560x500")

window.title("MSD")

e1 = StringVar()
c1 = IntVar()

Ti ={46 : '.0825',
     47 : '.0744',
     48 : '.7372',
     49 : '.0541',
     50 : '.0518'}

def  start():
    f = e1.get()
    g = c1.get()
    print(f)
    print(g)
    c = 1 - float(f[g])
    e = 1/c
    print(c)
    d = e * .7372
    print(d)


label2 = Label(window,text= 'elements:',font=('arial,20,bold'))
label2.place(x=10,y=75)

label8 = Label(window,text= 'overlaps:',font=('arial,20,bold'))
label8.place(x=10,y=125)

button1=Button(window,text='Start',width=12,bg='brown',fg='white',command=start)
button1.place(x=100,y=470)

entry4= Entry(window,textvar=e1,width=7)
entry4.place(x=10, y=100)
entry26= Entry(window,textvar=c1,width=7)
entry26.place(x=10, y=150)

window.mainloop()

对我来说,听起来你需要制作嵌套字典(也就是说,字典中的字典。)看我的例子:

from tkinter import *

window=Tk()
window.geometry("560x500")
window.title("MSD")

e1 = StringVar()
c1 = IntVar()

master = {
    'Ti' : {
        46 : '.0825',
        47 : '.0744',
        48 : '.7372',
        49 : '.0541',
        50 : '.0518'},
    'O' : {
        16 : '.9976',
        17 : '.0004',
        18 : '.0020'},
    'N' : {
        14 : '.9960',
        15 : '.0040'}
        }

def  start():
    f = e1.get()
    g = c1.get()
    element = master[f]
    print(element)
    abundance = element[g]
    print(abundance)

label2 = Label(window,text= 'elements:',font=('arial,20,bold'))
label2.place(x=10,y=75)

label8 = Label(window,text= 'overlaps:',font=('arial,20,bold'))
label8.place(x=10,y=125)

button1=Button(window,text='Start',width=12,bg='brown',fg='white',command=start)
button1.place(x=100,y=470)

entry4= Entry(window,textvar=e1,width=7)
entry4.place(x=10, y=100)
entry26= Entry(window,textvar=c1,width=7)
entry26.place(x=10, y=150)

window.mainloop()

我没有足够的化学知识来真正知道你来这里的目的,但这应该让你开始。 看看“主”字典如何包含他们可以输入的不同元素的条目,然后这些条目也有一个可以调用的字典。 当它们在 start() 中被调用时,它会轮询条目字段,然后找到要从“master”中提取的元素字典,然后从中获取数字。 如果你愿意,你可以通过简单地输入abundance = master[f][g]来缩短它。

我希望这就是你的目标; 随时提出更多问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM