1 (31.05.2023 22:00:38 отредактировано caspar)

Пишу программу на Python. Столкнулся с проблемой.

Задача: Читаю текстовый файл, содержащий результаты некоторых тестов (в одном файле содержится несколько тестов).
Надо из файла выбрать один тест, обработать его и распечатать результат.
Читаю файл, нахожу первые строки тестов, имеющие вид : "1  2019.05.21 00:39:05" и их список записываю в список lTestHeaders.
Этот список передается в combobox:

# Создаем combobox выбора теста
t=StringVar()
test=ttk.Combobox(root,width=14,textvariable=t)
test['values']=lTestHeaders
test.grid(row=0,column=2,sticky=W)
test.current()
test.bind("<<ComboboxSelected>>",testSelect)

С помощью combobox test выбираю нужный тест и его обрабатываю.
Все работает прекрасно до тех пор, пока я работаю с одним файлом тестов. Стоит прочитать другой файл, список в combobox не обновляется и при попытке выбора теста программа вылетает с ошибкой.
Я не смог найти, как обновить список combobox.

Пока в качестве временной меры заглушил в меню пункт "Открыть файл.." и после обработки одного файла закрываю программу, а для обработки следующего запускаю вновь. Но это как-то не комильфо.

Подскажите, кто может, как после прочтения нового файла и составления нового списка обновить combobox.

Путь важнее цели.

2

Насколько я понял, это Tkinter.

caspar пишет:
test['values']=lTestHeaders

Вот это значение пробовали менять? Только насколько я понимаю, здесь не хватает установить state="readonly" и лучше как-то убрать выбор перед обновлением.

ᛈᚺ'ᚾᚷᛚᚢᛁ ᛗᚷᛚᚹ'ᚾᚨᚠᚺ ᚲᛏᚺᚢᛚᚺᚢ ᚱ'lᚷᛖᚺ ᚹᚷᚨᚺ'ᚾᚨᚷᛚ ᚠᚺᛏᚨᚷᚾ

Asus Prime B460M-K, i5-10500, Intel 630 UHD + NVIDIA GeForce RTX3060, DDR4 32 GB, SSD 1TB + HDD 2TB | Linux Mint 22.3 Cinnamon + Windows 11

3 (28.05.2023 17:52:52 отредактировано caspar)

Rizado пишет:

Вот это значение пробовали менять?

При вставке этой строки в процедуре анализа входного файла выдает:

Traceback (most recent call last):
  File "/home/ses/BodyAn/BodyAn.py", line 194, in <module>
    clickOpen()
  File "/home/ses/BodyAn/BodyAn.py", line 78, in clickOpen
    readFile(fl)
  File "/home/ses/BodyAn/BodyAn.py", line 67, in readFile
    analProt()
  File "/home/ses/BodyAn/BodyAn.py", line 56, in analProt
    test['values']=lTestHeaders
NameError: name 'test' is not defined

Даже если переменная test описана в процедуре как global
Видимо здесь надо использовать не прямое присваивание, а метод, по аналогии как у меня меняются отображаемые значения на метках:

def updateLabels():
    # Показать надписи
    LabelHghtV.configure(text=str(iHeight))

Но для combobox я подходящего метода не нашел.

Путь важнее цели.

4

caspar, не оно?
https://www.delftstack.com/ru/tutorial/ … 0%b8%d1%8f

ᛈᚺ'ᚾᚷᛚᚢᛁ ᛗᚷᛚᚹ'ᚾᚨᚠᚺ ᚲᛏᚺᚢᛚᚺᚢ ᚱ'lᚷᛖᚺ ᚹᚷᚨᚺ'ᚾᚨᚷᛚ ᚠᚺᛏᚨᚷᚾ

Asus Prime B460M-K, i5-10500, Intel 630 UHD + NVIDIA GeForce RTX3060, DDR4 32 GB, SSD 1TB + HDD 2TB | Linux Mint 22.3 Cinnamon + Windows 11

5

Rizado пишет:

не оно?

Спасибо. По-моему оно. Буду пробовать  ab   az

Путь важнее цели.