为什么是.!条目> 保存在条目小部件中,而我键入数字?



下面是我为使用tkinter的GUI编写的代码,该代码使用Entry小部件从用户那里获取条目并将其存储在列表中。在一个函数的后面,它会对其进行迭代以进行一些计算。

客户代码


import socket
import turtle
#import time
import queue
import threading
from tkinter import *
class GUI:
entries = []
def __init__(self, master):
self.master = master
master.title("Collision Detection")
self.buff_data = queue.Queue()
self.t1 = threading.Thread(target = self.recvData)
self.t2 = threading.Thread(target=self.calculate_threshold)
self.entries = []

self.host = '127.0.0.1'
self.port = 5001
self.s = socket.socket()
self.s.connect((self.host, self.port))
self.create_GUI()
def create_GUI(self):

self.input_label = Label(root, text = "Input all the gratings set straight wavelength values in nm")
self.input_label.grid(row = 0)

self.core_string = "Core "
self.label_col_inc = 0
self.entry_col_inc = 1
self.core_range = range(1, 5)
for y in self.core_range:
self.core_text = self.core_string + str(y) + '_' + '25'
self.core_label = Label(root, text = self.core_text)
self.entry = Entry(root)
self.core_label.grid(row=1, column=self.label_col_inc, sticky=E)
self.entry.grid(row=1, column=self.entry_col_inc)
self.entries.append(self.entry)
self.label_col_inc += 2
self.entry_col_inc += 2

self.threshold_label = Label(root, text = "Threshold in nm")
self.entry_threshold = Entry(root)
self.threshold_label.grid(row = 2, sticky = E)
self.entry_threshold.grid(row = 2, column = 1)

self.light_label = Label(root, text = 'Status')
self.light_label.grid(row = 3, column = 3)
self.canvas = Canvas(root, width = 150, height = 50)
self.canvas.grid(row = 4, column = 3)

# Green light
self.green_light = turtle.RawTurtle(self.canvas)
self.green_light.shape('circle')
self.green_light.color('grey')
self.green_light.penup()
self.green_light.goto(0,0)
# Red light
self.red_light = turtle.RawTurtle(self.canvas)
self.red_light.shape('circle')
self.red_light.color('grey')
self.red_light.penup()
self.red_light.goto(40,0)

self.data_button = Button(root, text = "Get data above threshold", command = self.getData)
self.data_button.grid(row = 5, column = 0)

# function to receive TCP data blocks
def getData(self):
#start = timeit.default_timer()

len_message = self.s.recv(4)
print('len_message', len_message)
#p = multiprocessing.Pool(processes = self.process_num)
bytes_length = int(len_message.decode('utf-8'))  # for the self-made server
recvd_data = self.s.recv(bytes_length)
print('data', recvd_data)
self.buff_data.put(recvd_data)
#print('buffer', self.buff_data)
self.t2.start()
#self.t1.start()
self.t2.join()
#self.t1.join()


def recvData(self):
len_message = self.s.recv(4)
print('len_message', len_message)
while len_message:
bytes_length = int(len_message.decode('utf-8'))  # for the self-made server
recvd_data = self.s.recv(bytes_length)
print('data', recvd_data)
self.buff_data.put(recvd_data)
#print('buffer', self.buff_data)
len_message = self.s.recv(4)
print('len_message', len_message)
else:
print('out of loop')
self.s.close()

def calculate_threshold(self):
print('Calculating:')
rmv_data = self.buff_data.get()
stringdata = rmv_data.decode('utf-8')
rep_str = stringdata.replace(",", ".")
splitstr = rep_str.split()
print('receiving')
# received wavelength values
inc = 34
wav_threshold = []
print('entries is', self.entries)
for y in self.entries:
print('0')
print('y is', y)
straight_wav = float(y.get())
print('straight_wav', straight_wav)
wav = float(splitstr[inc])
print('2')
wav_diff = wav - straight_wav
print('3')
if wav_diff < 0:
wav_diff = wav_diff * (-1)
wav_threshold.append(wav_diff)
inc += 56
threshold = float(self.entry_threshold.get())
print('receiving2')
# writing into the file
data = []
inc1 = 0
col1 = 2
col2 = 6
data.insert(0, (str(splitstr[0])))
data.insert(1, (str(splitstr[1])))
for x in wav_threshold:
if (x > threshold):
self.red_light.color('red')
self.green_light.color('grey')
data.insert(col1, (str(splitstr[34 + inc1])))
data.insert(col2,(str(x)))
else:
self.red_light.color('grey')
self.green_light.color('green')
data.insert(col1,'-')
data.insert(col2,'-')
inc1 += 56
col1 += 1
col2 += 1
print('wiriting')
self.write_file(data)

# function to write into the file
def write_file(self,data):
with open("Output.txt", "a") as text_file:
text_file.write('t'.join(data[0:]))
text_file.write('n')
if __name__ == '__main__':
root = Tk()
gui = GUI(root)
root.mainloop()

服务器代码



import socket
import threading
import os

def Main():
host = '127.0.0.1'
port = 5001
s = socket.socket()
s.bind((host,port))
s.listen(5)
print("Server started")

while True:
c,addr = s.accept()
print("Client connected ip:<" + str(addr) + ">")


c.sendall('1685 2020/03/02  14:42:05    318301  4   1   25  0   0   0   0   1513,094    1516,156    1519,154    1521,969    1525,029    1527,813    1530,921    1533,869    1536,740    1539,943    1542,921    1545,879    1548,843    1551,849    1554,760    1557,943    1560,782    1563,931    1566,786    1569,751    1572,690    1575,535    1578,638    1581,755    1584,759    41  39  33  39  48  44  49  55  61  58  64  55  68  74  68  59  57  74  61  68  58  64  54  47  46  2   25  0   0   0   0   1512,963    1515,935    1518,857    1521,849    1524,655    1527,577    1530,332    1533,233    1536,204    1539,488    1542,571    1545,725    1549,200    1552,430    1555,332    1558,484    1561,201    1564,285    1567,001    1569,870    1572,758    1575,491    1578,512    1581,547    1584,405    48  43  37  42  57  54  59  62  67  58  71  59  77  82  82  64  71  88  77  79  72  73  63  49  50  3   25  0   0   0   0   1513,394    1516,517    1519,536    1522,082    1525,428    1527,963    1531,288    1534,102    1536,659    1539,757    1542,707    1545,627    1548,389    1551,459    1554,406    1557,986    1560,667    1564,103    1567,036    1570,144    1573,189    1575,888    1579,185    1582,323    1585,338    35  36  32  37  57  58  61  64  75  73  70  62  61  62  59  51  52  64  58  62  70  70  64  54  55  4   25  0   0   0   0   1512,658    1515,752    1518,797    1521,707    1524,744    1527,627    1530,871    1534,002    1537,086    1540,320    1543,217    1546,010    1548,660    1551,385    1554,253    1557,074    1560,193    1563,116    1566,043    1568,963    1571,855    1574,957    1577,954    1581,128    1584,273    43  42  39  40  56  50  56  62  65  54  59  62  75  79  73  63  67  77  73  75  68  62  54  51  51  100 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN'.encode())

c.sendall('1685 2020/03/03  14:42:05    318302  4   1   25  0   0   0   0   1513,094    1516,156    1519,154    1521,969    1525,029    1527,813    1530,921    1533,869    1536,740    1539,943    1542,921    1545,879    1548,843    1551,849    1554,760    1557,943    1560,782    1563,931    1566,786    1569,751    1572,690    1575,535    1578,638    1581,755    1584,759    41  39  33  39  48  44  49  55  61  58  64  55  68  74  68  59  57  74  61  68  58  64  54  47  46  2   25  0   0   0   0   1512,963    1515,935    1518,857    1521,849    1524,655    1527,577    1530,332    1533,233    1536,204    1539,488    1542,571    1545,725    1549,200    1552,430    1555,332    1558,484    1561,201    1564,285    1567,001    1569,870    1572,758    1575,491    1578,512    1581,547    1584,405    48  43  37  42  57  54  59  62  67  58  71  59  77  82  82  64  71  88  77  79  72  73  63  49  50  3   25  0   0   0   0   1513,394    1516,517    1519,536    1522,082    1525,428    1527,963    1531,288    1534,102    1536,659    1539,757    1542,707    1545,627    1548,389    1551,459    1554,406    1557,986    1560,667    1564,103    1567,036    1570,144    1573,189    1575,888    1579,185    1582,323    1585,338    35  36  32  37  57  58  61  64  75  73  70  62  61  62  59  51  52  64  58  62  70  70  64  54  55  4   25  0   0   0   0   1512,658    1515,752    1518,797    1521,707    1524,744    1527,627    1530,871    1534,002    1537,086    1540,320    1543,217    1546,010    1548,660    1551,385    1554,253    1557,074    1560,193    1563,116    1566,043    1568,963    1571,855    1574,957    1577,954    1581,128    1584,273    43  42  39  40  56  50  56  62  65  54  59  62  75  79  73  63  67  77  73  75  68  62  54  51  51  100 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN'.encode())

c.sendall('1685 2020/03/04  14:42:05    318303  4   1   25  0   0   0   0   1513,094    1516,156    1519,154    1521,969    1525,029    1527,813    1530,921    1533,869    1536,740    1539,943    1542,921    1545,879    1548,843    1551,849    1554,760    1557,943    1560,782    1563,931    1566,786    1569,751    1572,690    1575,535    1578,638    1581,755    1584,759    41  39  33  39  48  44  49  55  61  58  64  55  68  74  68  59  57  74  61  68  58  64  54  47  46  2   25  0   0   0   0   1512,963    1515,935    1518,857    1521,849    1524,655    1527,577    1530,332    1533,233    1536,204    1539,488    1542,571    1545,725    1549,200    1552,430    1555,332    1558,484    1561,201    1564,285    1567,001    1569,870    1572,758    1575,491    1578,512    1581,547    1584,405    48  43  37  42  57  54  59  62  67  58  71  59  77  82  82  64  71  88  77  79  72  73  63  49  50  3   25  0   0   0   0   1513,394    1516,517    1519,536    1522,082    1525,428    1527,963    1531,288    1534,102    1536,659    1539,757    1542,707    1545,627    1548,389    1551,459    1554,406    1557,986    1560,667    1564,103    1567,036    1570,144    1573,189    1575,888    1579,185    1582,323    1585,338    35  36  32  37  57  58  61  64  75  73  70  62  61  62  59  51  52  64  58  62  70  70  64  54  55  4   25  0   0   0   0   1512,658    1515,752    1518,797    1521,707    1524,744    1527,627    1530,871    1534,002    1537,086    1540,320    1543,217    1546,010    1548,660    1551,385    1554,253    1557,074    1560,193    1563,116    1566,043    1568,963    1571,855    1574,957    1577,954    1581,128    1584,273    43  42  39  40  56  50  56  62  65  54  59  62  75  79  73  63  67  77  73  75  68  62  54  51  51  100 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN'.encode())

c.sendall('1685 2020/03/05  14:42:05    318411  4   1   25  0   0   0   0   1513,094    1516,156    1519,154    1521,969    1525,029    1527,813    1530,921    1533,869    1536,740    1539,943    1542,921    1545,879    1548,843    1551,849    1554,760    1557,943    1560,782    1563,931    1566,786    1569,751    1572,690    1575,535    1578,638    1581,755    1584,759    41  39  33  39  48  44  49  55  61  58  64  55  68  74  68  59  57  74  61  68  58  64  54  47  46  2   25  0   0   0   0   1512,963    1515,935    1518,857    1521,849    1524,655    1527,577    1530,332    1533,233    1536,204    1539,488    1542,571    1545,725    1549,200    1552,430    1555,332    1558,484    1561,201    1564,285    1567,001    1569,870    1572,758    1575,491    1578,512    1581,547    1584,405    48  43  37  42  57  54  59  62  67  58  71  59  77  82  82  64  71  88  77  79  72  73  63  49  50  3   25  0   0   0   0   1513,394    1516,517    1519,536    1522,082    1525,428    1527,963    1531,288    1534,102    1536,659    1539,757    1542,707    1545,627    1548,389    1551,459    1554,406    1557,986    1560,667    1564,103    1567,036    1570,144    1573,189    1575,888    1579,185    1582,323    1585,338    35  36  32  37  57  58  61  64  75  73  70  62  61  62  59  51  52  64  58  62  70  70  64  54  55  4   25  0   0   0   0   1512,658    1515,752    1518,797    1521,707    1524,744    1527,627    1530,871    1534,002    1537,086    1540,320    1543,217    1546,010    1548,660    1551,385    1554,253    1557,074    1560,193    1563,116    1566,043    1568,963    1571,855    1574,957    1577,954    1581,128    1584,273    43  42  39  40  56  50  56  62  65  54  59  62  75  79  73  63  67  77  73  75  68  62  54  51  51  100 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN'.encode())


c.close()


if __name__ == '__main__':
Main()

但我什么时候得到的是

len_message b'1685'
data b' 2020/03/02t14:42:05t318301t4t1t25t0t0t0t0t1513,094t1516,156t1519,154t1521,969t1525,029t1527,813t1530,921t1533,869t1536,740t1539,943t1542,921t1545,879t1548,843t1551,849t1554,760t1557,943t1560,782t1563,931t1566,786t1569,751t1572,690t1575,535t1578,638t1581,755t1584,759t41t39t33t39t48t44t49t55t61t58t64t55t68t74t68t59t57t74t61t68t58t64t54t47t46t2t25t0t0t0t0t1512,963t1515,935t1518,857t1521,849t1524,655t1527,577t1530,332t1533,233t1536,204t1539,488t1542,571t1545,725t1549,200t1552,430t1555,332t1558,484t1561,201t1564,285t1567,001t1569,870t1572,758t1575,491t1578,512t1581,547t1584,405t48t43t37t42t57t54t59t62t67t58t71t59t77t82t82t64t71t88t77t79t72t73t63t49t50t3t25t0t0t0t0t1513,394t1516,517t1519,536t1522,082t1525,428t1527,963t1531,288t1534,102t1536,659t1539,757t1542,707t1545,627t1548,389t1551,459t1554,406t1557,986t1560,667t1564,103t1567,036t1570,144t1573,189t1575,888t1579,185t1582,323t1585,338t35t36t32t37t57t58t61t64t75t73t70t62t61t62t59t51t52t64t58t62t70t70t64t54t55t4t25t0t0t0t0t1512,658t1515,752t1518,797t1521,707t1524,744t1527,627t1530,871t1534,002t1537,086t1540,320t1543,217t1546,010t1548,660t1551,385t1554,253t1557,074t1560,193t1563,116t1566,043t1568,963t1571,855t1574,957t1577,954t1581,128t1584,273t43t42t39t40t56t50t56t62t65t54t59t62t75t79t73t63t67t77t73t75t68t62t54t51t51t100 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN'
Calculating:
receiving
entries is [<tkinter.Entry object .!entry>, <tkinter.Entry object .!entry2>, <tkinter.Entry object .!entry3>, <tkinter.Entry object .!entry4>]
0
y is .!entry

因此,在calculate_threshold函数中不会进行进一步的计算。为什么我的输入值不是我输入的值,而是。!进入请帮忙。

<tkinter.Entry object .!entry>是小部件本身的表示,而不是小部件的内容。

在您的代码中,self.entries窗口小部件的列表,而不是窗口小部件中的数据列表。如果你想在窗口小部件中看到一个数据列表,你可以这样做:

print([entry.get() for entry in self.entries])

相关内容

  • 没有找到相关文章

最新更新