首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tkinter文本小部件返回“.!frame3.!Frame.!Frame.!Text”而不是相应的值

Tkinter文本小部件返回“.!frame3.!Frame.!Frame.!Text”而不是相应的值
EN

Stack Overflow用户
提问于 2020-04-09 09:53:06
回答 1查看 49关注 0票数 0

我目前正在做一个项目,在这个项目中,你可以扫描条形码,然后将结果转换成excel文件。我正在使用tkinter制作我的图形用户界面,然而,当我试图从文本小工具获取值时,它返回的值是".!frame3.!frame3.!frame.! text“。如何修复此问题以获得适当的值?

到目前为止,以下是我的代码

代码语言:javascript
复制
import tkinter as tk 
from tkinter import *
root = tk.Tk(className = "Tool Manager")
root.configure(bg='#C4C4C4')
root.title('Main Screen')
root.geometry("800x600")




main = Frame(root, bg='#C4C4C4', width = 800, height = 600)
#This is the contents of the Main Frame (screen 1)
frame_pad1 = Frame(main, bg='#C4C4C4')
frame_1 = Frame(main,bg='#C4C4C4')
frame_2 = Frame(main, bg='#C4C4C4')
frame_3 = Frame(main, bg='#C4C4C4')
min = Frame(root, bg = 'GREEN')

#mout stuffs
mout = Frame(root, bg = '#C4C4C4')
outframe_pad1 = Frame(mout, bg='#C4C4C4')
outframe_1 = Frame(mout, bg='#C4C4C4')
outframe_2  = Frame(mout, bg='#C4C4C4')
outframe_3  = Frame(mout, bg='#C4C4C4')




#code for changing screens
def raise_frame(frame):
    frame.tkraise()
for frame in (main, min, mout):
    frame.grid(row=1, column=1, sticky='news')
#sets frame weight for 3 rows (centers frames)
rows = 0
while rows < 3:
    root.rowconfigure(rows, weight=1)
    root.columnconfigure(rows,weight=1)
    rows += 1

def commit_to_file():
    ID = name.get()
    out_list.get('1.0', 'end-1c')
    print(out_list) #<----- THIS IS WHERE I'M RETURNING VALUES TO THE TERMINAL


def on_every_keyboard_input(event):
    update_char_length(out_list)

   #updating Line Length Information
def update_char_length(out_list):
    string_in_text = out_list.get('1.0', '1.0 lineend')
    string_length = len(string_in_text)
    print(string_length)
    if (string_length == 4):
        out_list.insert(0.0, '\n')
        out_list.mark_set("insert", "%d.%d" % (0,0))

#main screen formatting
area = PhotoImage(file="test.png")
areaLabel = Label(frame_1, image=area, bg='#C4C4C4')
areaLabel.pack(side=RIGHT)

mwLabel = Label(frame_2,text="this is only a test", font=("Airel", 20), bg='#C4C4C4')
mwLabel.pack(side=RIGHT)

out_button = Button(frame_3, text="Check Out", command=lambda:raise_frame(mout) , height=5, width=20, font=("Airel", 15))
out_button.pack(side=RIGHT, padx=20, pady = 4)
in_button = Button(frame_3, text="Check In", command=lambda:raise_frame(min), height=5, width=20, font=("Airel", 15))
in_button.pack(side=LEFT, padx=20, pady = 4)


#out screen formatting
name = Entry(outframe_1, font=("Airel", 15))
name.pack(side=RIGHT)
name_lbl = Label(outframe_1, text="ID Number", bg='#C4C4C4', font=("Airel", 15))
name_lbl.pack(side=LEFT)
outlist  = Frame(outframe_2, bd=1, relief=SUNKEN)
outlist.pack(side=LEFT)
out_list = Text(outlist, height=30, width=40)
out_list.pack(side=RIGHT)
done_btn = Button(outframe_3, text="Done", command=commit_to_file, font=("Ariel", 15))
done_btn.pack(side=RIGHT, padx=20, pady=4)



#init to main screen
raise_frame(main)
#drawing objects for main screen
frame_pad1.pack(padx=1, pady=25)
frame_1.pack(padx=1,pady=1)
frame_2.pack(padx=10,pady=1)
frame_3.pack(padx=1, pady=80)
#drawing out screen
outframe_1.pack(padx=1, pady=1)
outframe_2.pack(padx=1,pady=1)
outframe_3.pack(padx=1, pady=1)



#calls line info update out screen
out_list.bind('<KeyRelease>', on_every_keyboard_input)


root.mainloop()
EN

回答 1

Stack Overflow用户

发布于 2020-04-09 10:41:15

您打印的是命令,而不是它的值。将命令放入一个变量中,然后打印该变量。示例:myVar = out_list.get("1.0", "end-1c"),然后是print(myVar)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61112746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档