Я создал собственный класс виджетов tkinter, который имеет (среди прочего) слайдер. Приведенные ниже методы run_control_thread и control_l oop являются методами внутри указанного класса. Они запускают поток, который отправляет команду двигателю, когда нажимается кнопка (также «дочерний элемент» моего класса виджетов). Это отлично работает, когда только один виджет управляет двигателем, но если есть несколько виджетов, управляющих (разными) двигателями, при попытке запустить self.slider.get () выскакивает ошибка, наблюдаемая в методе run_control_thread. Вместо получения значения ползунка возникает исключение. Я новичок в Python, Tkinter и Stack Overflow, поэтому я буду благодарен за любую помощь!
def run_control_thread(self):
global HTTP, command
print("running")
def run_thread():
global HTTP, command
current_device = CANDeviceDict[self.current_chosen]
while(self.control_loop_enabled == True):
demand = self.slider.get()
HTTP.send_command(command.control(current_device.model, current_device.id, demand, False, False,
self.control_mode_value(), 0, 0, False, False))
time.sleep(0.028)
control_thread = threading.Thread(target=run_thread)
control_thread.start()
def control_loop(self):
global HTTP, selected_device, command
if HTTP != None and command != None and selected_device != None:
if (self.control_loop_enabled):
self.control_loop_enabled = False
self.enable_control.config(text="Enable Control")
self.slider.set(0)
else:
self.control_loop_enabled = True
self.enable_control.config(text="Disable Control")
self.run_control_thread()
Ошибки:
>Exception in thread Thread-4"
Traceback (most recent call last):
File "C:\...\Python\Python38-32\lib\tkinter\__init__.py", line 3457, in get
return self.tk.getint(value)
_tkinter.TclError: expected integer but got "expected integer but got "0.00""
<class 'tkinter.Scale'>
>During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\...\Python\Python38-32\lib\threading.py", line 932, in _bootstrap_inner
self.run()
File "C:\...\Python\Python38-32\lib\threading.py", line 870, in run
demand = self.slider.get()
File "C:\...\Python\Python38-32\lib\tkinter\__init__.py", line 3460, in get
return self.tk.getdouble(value)
<class 'tkinter.Scale'>
_tkinter.TclError: expected floating-point number but got "expected integer but got "0.00""