[Tkinter] Problem with changing label text on button press - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: [Tkinter] Problem with changing label text on button press (/thread-3555.html) |
Problem with changing label text on button press - xk2006x - Jun-02-2017 Hi, I'm trying to change the label text on button press, but I get an error: In the GUI there are 3 SAVE Buttons, all of them should save one position with three coordinates (length, rotation, lifting). There are also 3 rows at the bottom of the window, which should display the saved positions (it's a 3x3 table from labels + headings). The elements of the appropriate row of the table (set 0 as default) should be changed by clicking on any of the SAVE buttons. There are some labels, buttons & co which I deleted for this post, because everything else works except changing the labels in that table. Here's my code: from tkinter import * import serial import threading import sys length_pos1 = 0 length_pos2 = 0 length_pos3 = 0 angle_pos1 = 0 angle_pos2 = 0 angle_pos3 = 0 lift_pos1 = 0 lift_pos2 = 0 lift_pos3 = 0 class App(threading.Thread): def __init__(self, ser): threading.Thread.__init__(self) self.ser = ser self.start() def callback(self): self.root.quit() def save(self, number): global length_pos1 global length_pos2 global length_pos3 global angle_pos1 global angle_pos2 global angle_pos3 global lift_pos1 global lift_pos2 global lift_pos3 if( number == 1): length_pos1 = self.Length_entry.get() angle_pos1 = self.Rotation_entry.get() lift_pos1 = self.Lift_entry.get() self.display_saved_pos(1) elif (number == 2): length_pos2 = self.Length_entry.get() angle_pos2 = self.Rotation_entry.get() lift_pos2 = self.Lift_entry.get() self.display_saved_pos(2) elif (number == 3): length_pos3 = self.Length_entry.get() angle_pos3 = self.Rotation_entry.get() lift_pos3 = self.Lift_entry.get() self.display_saved_pos(3) def display_saved_pos(self, number): if (number == 1): self.saved_length1.config (text = str(length_pos1)) self.saved_angle1.config (text = str(angle_pos1)) self.saved_lift1.config (text = str(lift_pos1)) elif (number == 2): self.saved_length2.config (text = str(length_pos2)) self.saved_angle2.config (text = str(angle_pos2)) self.saved_lift2.config (text = str(lift_pos2)) elif (number == 3): self.saved_length3.config (text = str(length_pos3)) self.saved_angle3.config (text = str(angle_pos3)) self.saved_lift3.config (text = str(lift_pos3)) def run(self): self.root = Tk() self.root.protocol("WM_DELETE_WINDOW", self.callback) self.Save1_btn = Button(self.root, text = "SAVE", command = self.save(1)) self.Save2_btn = Button(self.root, text = "SAVE", command = self.save(2)) self.Save3_btn = Button(self.root, text = "SAVE", command = self.save(3)) self.saved_length1 = Label(self.root, text = "0") self.saved_length2 = Label(self.root, text = "0") self.saved_length3 = Label(self.root, text = "0") self.saved_angle1 = Label(self.root, text = "0") self.saved_angle2 = Label(self.root, text = "0") self.saved_angle3 = Label(self.root, text = "0") self.saved_lift1 = Label(self.root, text = "0") self.saved_lift2 = Label(self.root, text = "0") self.saved_lift3 = Label(self.root, text = "0") self.saved_length1.pack() self.saved_length2.pack() self.saved_length3.pack() self.saved_angle1.pack() self.saved_angle2.pack() self.saved_angle3.pack() self.saved_lift1.pack() self.saved_lift1.pack() self.saved_lift1.pack() self.Length_entry.grid( row = 3, column = 2) self.Rotation_entry.grid(row = 4, column = 2) self.Lift_entry.grid( row = 5, column = 2) self.Save1_btn.grid( row = 3, column = 6) self.Save2_btn.grid( row = 4, column = 6) self.Save3_btn.grid( row = 5, column = 6) self.saved_length1.grid(row = 7, column = 2) self.saved_length2.grid(row = 8, column = 2) self.saved_length3.grid(row = 9, column = 2) self.saved_angle1.grid(row = 7, column = 3) self.saved_angle2.grid(row = 8, column = 3) self.saved_angle3.grid(row = 9, column = 3) self.saved_lift1.grid(row = 7, column = 4) self.saved_lift2.grid(row = 8, column = 4) self.saved_lift3.grid(row = 9, column = 4) self.root.mainloop() ser = serial.Serial('COM3', 9600, timeout = 1) app = App(ser) while app.is_alive(): bytes_to_read = ser.inWaiting() if bytes_to_read > 0: sys.stdout.write(ser.read(bytes_to_read).decode("utf-8")) sys.stdout.flush() app.join()Thanks for any help. Chris RE: Problem with changing label text on button press - nilamo - Jun-02-2017 What's the whole traceback? |