Qt: чтение текстового файла и отображение в LineEdit
У меня есть входной файл и командный файл. Когда пакетный файл выполняется с помощью системной команды, создается соответствующий выходной файл.
Теперь я хочу, чтобы определенный текст (позиции от 350 до 357) из этого файла был отображен в моем виджете lineedit
Вот эта часть моего кода:
system("C:/ORG_Class0178.bat")
Теперь файл будет сгенерирован
File.open("C:/ORG_Class0178_out.txt", 'r').each do |line|
var = line[350..357]
puts var
# Проверить, читается ли файл.
@responseLineEdit = Qt::LineEdit.new(self)
@responseLineEdit.setFont Qt::Font.new("Times NEw Roman", 12)
@responseLineEdit.resize 100,20
@responseLineEdit.move 210,395
@responseLineEdit.setText("#{var}")
end
Когда я проверяю, читается ли файл с помощью оператора put, я получаю точный требуемый результат в редакторе. Однако тот же текст не отображается в LineEdit. Предложения приветствуются.
РЕДАКТИРОВАТЬ: проводное наблюдение здесь. Он отлично работает, когда я пытаюсь прочитать входной файл и отобразить его, однако он не работает с выходным файлом. Оператор put дает ответ в редакторе, подтверждающий, что выходной файл содержит необходимый текст. Я запутался по этому сценарию.
2 ответа
Нет ничего плохого в показанных фрагментах кода.
Обратите внимание, что var
является локальной переменной Находятся ли второй и третий фрагменты кода в одном контексте? Если они в том же методе, и var
не тронут промежуточный, он будет работать.
Если фрагменты принадлежат разным методам одного и того же класса, чем переменная экземпляра (@var
) решит проблему.
Если все это не помогает, используйте Pry, чтобы преследовать проблему. Перейдите по ссылке, чтобы найти необходимые предварительные условия и способы их использования. Место binding.pry
в вашем коде, и ваша программа остановится на этой строке. Затем проверьте, что делают ваши переменные.
Попробуйте 'rb' вместо 'r'
File.open("C:/ORG_Class0178_out.txt", 'rb').each do |line|
var = line[350..357]
puts var