Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt4: tabWidget + treeWidget = 1-я супер длинная колонка??? [RSS Feed]

#1 Янв. 23, 2015 18:30:40

Olenevod
Зарегистрирован: 2015-01-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: tabWidget + treeWidget = 1-я супер длинная колонка???

Проблема: когда вставляю treeWidget в tabWidget, то первая колонка почему-то становиться очень длинная. Если по отдельности - то все нормально.
Тестовый код в архиве.
Как быть???

# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'test.ui'
#
# Created: Fri Jan 23 18:17:52 2015
#      by: PyQt4 UI code generator 4.11.3
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
import sys
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s
try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.setupUi(self)
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(800, 600)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.tabWidget = QtGui.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(120, 30, 591, 351))
        self.tabWidget.setObjectName(_fromUtf8("tabWidget"))
        self.tab = QtGui.QWidget()
        self.tab.setObjectName(_fromUtf8("tab"))
        self.treeWidget = QtGui.QTreeWidget(self.tab)
        self.treeWidget.setGeometry(QtCore.QRect(20, 30, 541, 192))
        self.treeWidget.setObjectName(_fromUtf8("treeWidget"))
        item_0 = QtGui.QTreeWidgetItem(self.treeWidget)
        item_0 = QtGui.QTreeWidgetItem(self.treeWidget)
        self.tabWidget.addTab(self.tab, _fromUtf8(""))
        self.tab_2 = QtGui.QWidget()
        self.tab_2.setObjectName(_fromUtf8("tab_2"))
        self.tabWidget.addTab(self.tab_2, _fromUtf8(""))
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
        self.treeWidget.headerItem().setText(0, _translate("MainWindow", "1", None))
        self.treeWidget.headerItem().setText(1, _translate("MainWindow", "Новый столбец", None))
        self.treeWidget.headerItem().setText(2, _translate("MainWindow", "Новый столбец", None))
        __sortingEnabled = self.treeWidget.isSortingEnabled()
        self.treeWidget.setSortingEnabled(False)
        self.treeWidget.topLevelItem(0).setText(0, _translate("MainWindow", "Новый элемент", None))
        self.treeWidget.topLevelItem(0).setText(1, _translate("MainWindow", "одод", None))
        self.treeWidget.topLevelItem(0).setText(2, _translate("MainWindow", "лшлш", None))
        self.treeWidget.topLevelItem(1).setText(0, _translate("MainWindow", "опо", None))
        self.treeWidget.topLevelItem(1).setText(1, _translate("MainWindow", "прпр", None))
        self.treeWidget.topLevelItem(1).setText(2, _translate("MainWindow", "вппп", None))
        self.treeWidget.setSortingEnabled(__sortingEnabled)
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Tab 1", None))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Tab 2", None))
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    ex = Ui_MainWindow()
    ex.show()
    x = app.exec_()
    sys.exit(x)

Отредактировано Olenevod (Янв. 24, 2015 14:48:11)

Прикреплённый файлы:
attachment test.rar (1,7 KБ)

Офлайн

#2 Янв. 23, 2015 21:30:17

KrisTinka
Зарегистрирован: 2015-01-09
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: tabWidget + treeWidget = 1-я супер длинная колонка???

А зачем в архиве? Не каждый будет качать… Лучше выложить код используя теги.

Офлайн

#3 Янв. 24, 2015 14:50:37

Olenevod
Зарегистрирован: 2015-01-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: tabWidget + treeWidget = 1-я супер длинная колонка???

Выложил код

Офлайн

#4 Янв. 24, 2015 21:40:40

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

PyQt4: tabWidget + treeWidget = 1-я супер длинная колонка???

 self.treeWidget.setColumnWidth(0, 80)

Офлайн

#5 Янв. 25, 2015 10:35:53

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

PyQt4: tabWidget + treeWidget = 1-я супер длинная колонка???

У меня не отрабатывает.

self.treeWidget = QtGui.QTreeWidget(self.tab)
self.treeWidget.setGeometry(QtCore.QRect(20, 30, 541, 192))
self.treeWidget.setColumnWidth(0, 80)





————————–
Истина где-то рядом

Отредактировано alexbadaloff (Янв. 25, 2015 10:36:13)

Прикреплённый файлы:
attachment Screenshot.png (3,1 KБ)

Офлайн

#6 Янв. 25, 2015 10:38:54

Olenevod
Зарегистрирован: 2015-01-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: tabWidget + treeWidget = 1-я супер длинная колонка???

Вот и у меня таже ерунда setColumnWidth не помогает, какое бы значение я не ставил

Офлайн

#7 Янв. 25, 2015 10:43:05

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

PyQt4: tabWidget + treeWidget = 1-я супер длинная колонка???

Если убрать эту строку:

self.treeWidget.setGeometry(QtCore.QRect(20, 30, 541, 192))

то всё кучкуется.


Я искал как сделать stretch (растягивание), но безуспешно.



————————–
Истина где-то рядом

Офлайн

#8 Янв. 25, 2015 11:22:25

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

PyQt4: tabWidget + treeWidget = 1-я супер длинная колонка???

alexbadaloff
Я искал как сделать stretch (растягивание), но безуспешно.

Для того чтобы это сделать, нужно:

а) Уйти от абсолютного позиционирования.
б) Использовать layout-виджеты для размещения элементов, убрать вот этот бред
self.centralwidget = QtGui.QWidget(MainWindow)
.
в) Переписать код вручную, с уходом от бредогенеративных абсурдных конструкций, вроде
setGeometry(QtCore.QRect(...
или
setObjectName(_fromUtf8...
и вот этой хреновины сверху
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s
try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
г) Вытащить содержание таба в отдельный класс.
д) Убрать методы, которые ничего не делают, т.е. все кроме __init___.

Офлайн

#9 Янв. 25, 2015 13:58:22

Olenevod
Зарегистрирован: 2015-01-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: tabWidget + treeWidget = 1-я супер длинная колонка???

Спасибо заработало.
Вопрос, а как тогда работать с Дизайнером???
Или его использовать только для наброска, а потом все пиреписывать руками?

Офлайн

#10 Янв. 25, 2015 16:29:18

alex925
Зарегистрирован: 2015-01-08
Сообщения: 204
Репутация: +  14  -
Профиль   Отправить e-mail  

PyQt4: tabWidget + treeWidget = 1-я супер длинная колонка???

Olenevod
а как тогда работать с Дизайнером???
Ни как, он нафиг не нужен и ты ни когда с ним не поймёшь, как на самом деле все работает.

Офлайн

  • Начало
  • » GUI
  • » PyQt4: tabWidget + treeWidget = 1-я супер длинная колонка???[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version