Текстовый виджет Tkinter возвращает ".! Frame3.! Frame3.! Frame.! Text" вместо соответствующих значений - PullRequest
0 голосов
/ 09 апреля 2020

В настоящее время я работаю над проектом, в котором вы сканируете штрих-коды, и он реализует результат в файл Excel. Я использую tkinter для создания GUI, однако, когда я пытаюсь получить значения из текстового виджета, он возвращает значение ".! Frame3.! Frame3.! Frame.! Text". Как я могу исправить это, чтобы получить соответствующие значения?

вот мой код пока

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()

1 Ответ

1 голос
/ 09 апреля 2020

Вы печатаете команду, а не ее значение. Поместите команду в переменную и затем напечатайте переменную. Пример: myVar = out_list.get("1.0", "end-1c"), а затем print(myVar)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...