Как сделать меню настройки последовательного порта, желательно в tkinter
Уже неделю пытаюсь разобраться как сделать это меню с комбобоксами, честно говоря - даже удивлён тому, что нигде нет примеров именно настройки портов, именно выбора параметров в самой программе, а не создание порта с заранее заданными значениями того же порта, битрейта, четности, и прочего. Может плохо ищу, может всё настолько просто, что это не требует объяснений, но видимо я слишком глуп, чтоб это понять. Серьёзно, за всю неделю видел только один пример программы на питоне, в которой была настройка порта, но все комментарии там на китайском, криво переведённом на английский, да и написана она видимо на более старой версии как Питона, так и PySerial, ибо её копия тупо не запускается, ругаясь на неправильное написание и отсутствие модулей. Уже даже задавал похожий вопрос тут, но внятного ответа так и не получил, только что-то вроде "так это ж переменные, меняй как хочешь". Как их менять-то?
Чего пытаюсь добиться: запускаю программу, открывается окно, в нём уже выбираю из комбобоксов порт, битрейт, тип четности, кол-во битов в пакете, кол-во стопбитов и уже после этого отправляю сообщения из полей ввода. Интерфейс уже есть
Ответы (1 шт):
В целом задача ну очень легкая. чтобы сделать окно используй следующий код:
from tkinter import *
from tkinter import ttk
root = Tk()
root.geometry("500x500")
чтобы создать комбобокс
combobox_values = ['apple', 'banana', 'orange'] #сюда вставляете нужные параметры
combobox = ttk.Combobox(root, values = combobox_values, state = "readonly")
чтобы не париться с получениям значения используйте StringVar(для сторки) или IntVar(для числа) для выбраного значения
combobox_value = StringVar()
# или
combobox_value = IntVar()
# чтобы задать значение по умолчанию используйте параметр value как для StringVar так и для IntVar
combobox_value = StringVar(value='apple')
полноценный код для создания комбобокса:
combobox_values = ['apple', 'banana', 'orange']
combobox_value = StringVar(value = combobox_values[0])
combobox = ttk.Combobox(root, values = combobox_values, textvariable = combobox_value, state = "readonly")
combobox.pack() #размещения в окне, можно также использовать grid или place
#подробнее тут: https://www.delftstack.com/de/tutorial/tkinter-tutorial/tkinter-geometry-managers/
чтобы получить значение используйте метод .get()
combobox_value.get() # -> "apple"
полностью код будет выглядеть так:
from tkinter import *
from tkinter import ttk
root = Tk()
root.geometry("500x500")
combobox_values = ['apple', 'banana', 'orange']
combobox_value = StringVar(value = combobox_values[0])
combobox = ttk.Combobox(root, values = combobox_values, textvariable = combobox_value, state = "readonly")
combobox.pack()
def get_combobox_value():
print(combobox_value.get())
button = Button(text = "Подтвердить", command = get_combobox_value)
button.pack()
root.mainloop()
добавление значений
def add_combobox_value(new_value):
values = list(combobox.cget('values'))
values.append(new_value)
combobox.configure(values = values)
