我在Tkinter的python中的代码有问题。我正在制作一个把DNA链转录成RNA的程序。我的输出应该是我输入的链,但是转录成RNA,例如.input = ACGTAGCT,输出UGCAUCGA ( DNA中A为U,C为G,G为C,T为A)。问题是,当我单击按钮时,有一个空的输出。
我的密码在这里:
import tkinter as tk
from tkinter import Label, Button, filedialog, Text
import os
root = tk.Tk()
canvas = tk.Canvas(root, height = 400, width = 400)
canvas.pack()
y = tk.Entry(root)
y.pack()
abc = y.get()
seq = [""]
for i in abc:
if i == "A":
seq.append("T")
elif i == "T":
seq.append("A")
elif i == "C":
seq.append("G")
elif i == "G":
seq.append("C")
def click():
y.get()
mylabel = Label(root, text = seq)
mylabel.pack()
run = Button(root, text = " Translate", bd = "5", command=click)
run.pack(side = "top")
popis1 = tk.Label(root, text='Insert DNA sequence')
popis1.config(font=('helvetica', 14))
canvas.create_window(200, 100, window=popis1)
popis2 = tk.Label(root, text= "RNA sequence is:")
canvas.create_window(200, 210, window=popis2)
output = tk.Label(root, text= print(seq),font=('helvetica', 10, 'bold',))
canvas.create_window(200, 230, window=output)
root.mainloop()发布于 2021-12-22 11:27:59
这里有几件事,主要问题是您没有在click函数中重新计算新的结果,因此应该如下所示:
def click():
seq = [""]
abc = y.get()
for i in abc:
if i == "A":
seq.append("U")
elif i == "T":
seq.append("A")
elif i == "C":
seq.append("G")
elif i == "G":
seq.append("C")
mylabel = Label(root, text = seq)
mylabel.pack()现在可以从原来的位置删除for循环。而且,你没有出现在翻译中,所以我改变了它。
现在它可以工作了,但是它将在结果之前显示{},因为您正在打印一个数组。您可以通过使用所示的here方法来解决这个问题。
mylabel = Label(root, text = ''.join(seq))现在,您可以看到这样的东西:

https://stackoverflow.com/questions/70448171
复制相似问题