python 2.7 - 使用 tkinter 获取条目的值



我想知道如何使用 Enter 显示值? 我的意思是,例如,如果我有一个这样的函数:

def open():
    path=tkFileDialog.askopenfilename(filetypes=[("Image File",'.jpg')])
    blue, green, red = cv2.split(path)
    total = path.size
    B = sum(blue) / total
    G = sum(green) / total
    R = sum(red) / total
    B_mean1.append(B)
    G_mean1.append(G)
    R_mean1.append(R)
    blue.set(B_mean1)
    green.set(G_mean1)
    red.set(R_mean1)
root = Tk()
blue_label = Label(app,text = 'Blue Mean')
blue_label.place(x = 850,y = 140)
blue = IntVar(None)
blue_text = Entry(app,textvariable = blue)
blue_text.place(x = 1000,y = 140)
green_label = Label(app,text = 'Green Mean')
green_label.place(x = 850,y = 170)
green = IntVar(None)
green_text = Entry(app,textvariable = green)
green_text.place(x = 1000,y = 170)
red_label = Label(app,text = 'Red Mean')
red_label.place(x = 850,y = 200)
red = IntVar(None)
red_text = Entry(app,textvariable = red)
red_text.place(x = 1000,y = 200) 
button = Button(app, text='Select an Image',command = open)
button.pack(padx = 1, pady = 1,anchor='ne')
button.place( x = 650, y = 60)
root.mainloop()  

我已经指定了所有必要的导入和列表变量。该值仍未显示在"输入"字段中。

就像如果我得到的值为: 蓝色平均值 = 37, 绿色平均值 = 36, 红色平均值 = 41

它将在控制台中打印,但不会在窗口中打印。我怎样才能做到这一点?

欢迎任何建议!感谢您的支持!

首先,

我想建议不要使用place方法,而是使用grid方法。它的速度要快得多,并允许您以更有序的方式做事 - 尤其是在此应用程序中。请注意,还有其他几何管理器(如pack)在其他情况下也很好。无论如何,您的图形用户界面:

root = Tk()
blue_label = Label(root, text="Blue mean:")
blue_label.grid(row=1, column=1, sticky="w")
blue_entry = Entry(root)
blue_entry.grid(row=1, column=2)
green_label = Label(root, text="Green mean:")
green_label.grid(row=2, column=1, sticky="w")
green_entry = Entry(root)
green_entry.grid(row=2, column=2)
red_label = Label(root, text="Red mean:")
red_label.grid(row=3, column=1, sticky="w")
red_entry = Entry(root)
red_entry.grid(row=3, column=2)
root.mainloop()

这使您的 GUI 显示良好且无需手动几何图形。请注意,粘滞只是设置文本的对齐方式("w"表示西,因此文本对齐左对齐)。

现在,要实际显示文本,您所要做的就是:

blue_entry.insert(0, "blue-mean-value")
green_entry.insert(0, "green-mean-value")
red_entry.insert(0, "red-mean-value")

如果您要覆盖已经存在的任何文本,只需执行以下操作:

blue_entry.delete(0, END) # And green_entry and red_entry

相关内容

  • 没有找到相关文章

最新更新