2

我有一个名为 data.txt 的文本文件,其中包含各种参数,例如数字、状态等。每行包含一组不同的数据。

现在,在我的 GUI 中,我有提交按钮。单击该按钮后,我希望这些数据中的“少数”在 GUI 屏幕上显示为表格

一件事是我确实知道它存在于文本文件中的哪个位置:

例如:状态出现在每行文本文件中的位置 [70..78] 数字出现在每行文本文件中的位置 [85..90] 等等

我只想将那些特定的数据部分显示在表格的各个列中

欢迎大家提出意见。我正在使用 Qt 和 Ruby 进行 GUI 设计

Following images show what exactly i am looking for: 

图 1:我的包含数据的文本文件
图 2:我的最终预期结果应该是这样的。

编辑:使用斯蒂芬提到的解决方案:

使用线路位置对我有用。但是这里有一个查询,当我尝试使用 puts 语句时,它确实可以正确打印。但是,当我尝试使用它在 TextEdit 小部件中显示它时,每一行都不会显示..

 @text_var = "#{line[70..78]}\t#{line[85..90]}

  @text = Qt::TextEdit.new(self)
  @text.setText (@text_var) 
  puts  @text_var

Puts 语句给出了正确的输出,但是我无法在小部件内发送相同的输出。如果我使用 break 语句,那么第一行将正确显示在小部件中。因此,当它尝试逐行读取小部件时会发生错误。最终,它被覆盖了,最后一行只有空白的地方被打印在我感觉的小部件中。

有什么解决方案吗?

4

1 回答 1

3

看起来StatusNumber您希望始终出现在同一列中。您可以在空白处拆分每一行data.txt以仅显示您想要的列。

File.open('data.txt').readlines.each do |line|
  columns = line.split(/\s+/)
  puts "#{columns[4]}\t#{columns[5]}"  
end

这将打印第 5 列和第 6 列,以制表符分隔。

正如您所提到的,您还可以利用了解职位的优势:

File.open('data.txt').readlines.each do |line|
  puts "#{line[70..78]}\t#{line[85..90]}"  
end
于 2016-03-09T04:18:44.410 回答