2012-01-08 28 views
9

tôi mới vào PyQt và vẫn còn chút nhầm lẫn dù sao đi nữa. Tôi có một cấu trúc file văn bản như thế này:Python - PyQt - QTable Widget - thêm hàng

  • Tên Họ Điện thoại Email

đâu không gian đang thực sự tab "\ t" bây giờ khi tôi đọc tập tin này whit phương pháp của tôi tôi muốn cư Widget QTable .

My QTable Widget có 4 cột gọi là Name, Surname, Telephone, Email bây giờ nó không có hàng nhưng khi tôi đọc các dòng từ tập tin và chia mỗi dòng bằng bộ phận của máy đánh chữ tôi muốn thêm một hàng mới trong mỗi cột chứa bất cứ điều gì đã xếp hàng.

Ai đó có thể chỉ cho tôi hướng đi về điều này vì tôi không thể tìm thấy giải pháp hoặc phương thức được cung cấp bởi QTable Widget cho phép bạn thực hiện điều này.

Trả lời

14

Khi bạn muốn điền QTableWidget, bạn cần đặt số lượng hàng và cột trước khi chèn dữ liệu example in documentation (tài liệu PySide tốt hơn PyQt). Và bạn không thể chỉ chèn chuỗi văn bản được phân tách bằng tab vào bảng, bạn cần tự chuẩn bị, sau đó điền bảng với số QTableWidgetItem bằng cách gọi QTableWidget.setItem. Nó sẽ giống như thế này:

entries = [] 
with open('data') as input: 
    for line in input: 
     entries.append(line.strip().split('\t')) 

tableWidget.setRowCount(len(entries)) 
tableWidget.setColumnCount(len(entries[0])) 

for i, row in enumerate(entries): 
    for j, col in enumerate(row): 
     item = QTableWidgetItem(col) 
     tableWidget.setItem(i, j, item) 

Tôi giả định rằng bạn có data tập tin với các mục của bạn, và tableWidgetQTableWidget dụ.

Trong tệp ví dụ này được phân tích bằng tay, nhưng hãy xem xét sử dụng standart csv module cho tác vụ này.

+0

Cảm ơn sự giúp đỡ. Tôi đã thay đổi ứng dụng gui của mình, nơi phương thức của tôi đọc tệp theo dòng và nối các dòng vào danh sách như bạn đã làm. Cảm ơn rất nhiều. –

+0

Đối với một số người mới bắt đầu python, như tôi: Tôi tin rằng để sử dụng QTableWidgetItem bạn phải nhập QtGui từ PyQt4 (từ PyQt4 nhập QtCore, QyGui) và sử dụng QtGui.QTableWidgetItem thay vì chỉ có QTableWidgetItem. –