2012-11-16 24 views
5

Gần đây tôi bắt đầu học Python và bây giờ tôi đang tạo một phần mềm với GUI sử dụng Thư viện PyQt.Cập nhật động QGridLayout - Python PyQt

Đây là vấn đề của tôi: Tôi tạo một Scrollarea, tôi đặt trong scrollarea này một widget có chứa một QGridLayout.

sa = QtGui.QScrollArea() 
    sa_widget = QtGui.QWidget() 
    self.sa_grid.setSizeConstraint(QtGui.QLayout.SetMinAndMaxSize) 
    sa_widget.setLayout(self.sa_grid) 
    sa.setWidgetResizable(True) 
    sa.setWidget(sa_widget) 

Sau đó, tôi thêm 10 QLabel (đây chỉ là một ví dụ về nhiên, trong ví dụ này tôi đang sử dụng một QGridLayout giống như một Layout Vertical):

i = 0 
    while i<100: 
     i = i +1 
     add = QtGui.QLabel("Row %i" % i) 
     self.sa_grid.addWidget(add) 

Sau đó, tôi tạo ra một nút đó gọi hàm "function_name", tôi muốn rằng chức năng này xóa một dòng, cho đến nay đây là những gì tôi đã viết:

tmp = QtGui.QWidget() 
    tmp = self.sa_grid.itemAt(0) 
    self.sa_grid.removeItem(tmp) 

Nó xóa hàng đầu tiên và mỗi x hàng của GridLayout trở thành hàng x-1 tuy nhiên, nó không xóa văn bản "Hàng 1" để tôi thấy "Hàng 0" và "Hàng 1" trên cùng một hàng.

Bất cứ ai cũng có thể giúp tôi?

Cảm ơn rất nhiều trước, Davide

Trả lời

2

Xóa mục khỏi bố cục sẽ không xóa mục đó. Mục sẽ chỉ trở thành đối tượng nổi tự do không có bố cục được liên kết.

Nếu bạn muốn để có được thoát khỏi những đối tượng hoàn toàn, xóa một cách rõ ràng:

def deleteGridWidget(self, index): 
    item = self.sa_grid.itemAt(index) 
    if item is not None: 
     widget = item.widget() 
     if widget is not None: 
      self.sa_grid.removeWidget(widget) 
      widget.deleteLater() 
+0

trình hoàn hảo, thanks a lot! Tôi lãng phí rất nhiều thời gian tìm kiếm một câu trả lời và bây giờ tôi đã nhận nó. Bạn có thể gợi ý cho tôi một số hướng dẫn Python/PyQt tuyệt vời không? Cảm ơn sự giúp đỡ của bạn! – xuT

+0

@ TheTux94. [PyQt Wiki] (http://www.diotavelli.net/PyQtWiki/StartPage?action=show&redirect=FrontPage) không phải là một nơi tồi tệ để bắt đầu. Không phải tất cả các tài liệu được cập nhật (một số trong đó liên quan đến PyQt3 chứ không phải PyQt4), nhưng nếu bạn đào xung quanh bạn sẽ tìm thấy rất nhiều thứ hữu ích. – ekhumoro