Форум сайта python.su
Как подогнать размер виджета по ширине под таблицу?
import sys from PyQt4.QtGui import QTableWidget, QSizePolicy, QApplication app = QApplication(sys.argv) w = QTableWidget(10,10) # p = QSizePolicy() # p.setHorizontalPolicy(QSizePolicy.Ignored) # w.setSizePolicy(p) # print(w.sizePolicy().horizontalPolicy()) # print(w.width()) # print(w.frameSize()) # print(w.size()) # print(w.sizeHint()) # print(w.baseSize()) # print(w.maximumWidth()) # print(w.maximumViewportSize()) # print(w.geometry()) # print(w.normalGeometry()) # print(w.frameGeometry().width()) # w.adjustSize() w.show() sys.exit(app.exec_())
Отредактировано sergeek (Фев. 19, 2013 07:07:15)
Офлайн
Видимо нельзя-таки это сделать по-нормальному. Решил так:
import sys from PyQt4.QtGui import QTableWidget, QApplication app = QApplication(sys.argv) w = QTableWidget(10,10) s = w.horizontalScrollBar() w.show() while s.isVisible(): w.setFixedWidth(w.width()+1) sys.exit(app.exec_())
Офлайн
Еще вариант.
Ширину столбцов можно получить через horizontalHeader
http://qt-project.org/doc/qt-4.8/qheaderview.html#length
К ней нужно прибавить ширину вертикального хедера и скролбара
import sys from PyQt4.QtGui import QTableWidget, QApplication app = QApplication(sys.argv) w = QTableWidget(10,10) w.show() w.setFixedWidth(w.horizontalHeader().length() + w.verticalScrollBar().width() + w.verticalHeader().width()) sys.exit(app.exec_())
Офлайн
Так получше, ага. Я пробовал только через сумму ширины стобцов и скроллбара и там побольше пикселей не хватало. Потестил - в линуксе не хватает 4 пикселя, в винХП - 2. Видимо, там еще какой-нибудь ширины рамки не достает. В любом случае, лучше, наверное, добавить константы, чем наблюдать как оно дергается Спасибо
Отредактировано sergeek (Фев. 19, 2013 18:09:16)
Офлайн