Почему QtDesigner сжимает окно?
Использую Qt для написания интерфейса под Python.
В Qt Designer я получаю вот это:
А когда запускаю через Python вот это:
gui.ui:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>367</width>
<height>362</height>
</rect>
</property>
<property name="windowTitle">
<string>Парсер для avito.ru</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>70</y>
<width>251</width>
<height>20</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>16</pointsize>
</font>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="text">
<string>Вставьте ссылку на страницу:</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit">
<property name="geometry">
<rect>
<x>10</x>
<y>100</y>
<width>221</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>80</x>
<y>130</y>
<width>71</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>14</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Начать</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>40</x>
<y>10</y>
<width>201</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>18</pointsize>
<underline>true</underline>
</font>
</property>
<property name="text">
<string>Состояние парсера:</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>80</x>
<y>30</y>
<width>121</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>Не активен</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>
main.py:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from code.main_window_ui import Ui_Form
class MainWindow(QMainWindow, Ui_Form):
def __init__(self, parent=None, *args, **kwargs):
QMainWindow.__init__(self)
self.setupUi(self)
def main():
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
main()
main_window_ui.py:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(367, 362)
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(20, 70, 251, 20))
font = QtGui.QFont()
font.setPointSize(16)
self.label.setFont(font)
self.label.setLineWidth(1)
self.label.setTextFormat(QtCore.Qt.AutoText)
self.label.setObjectName("label")
self.lineEdit = QtWidgets.QLineEdit(Form)
self.lineEdit.setGeometry(QtCore.QRect(10, 100, 221, 20))
self.lineEdit.setObjectName("lineEdit")
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(80, 130, 71, 41))
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setObjectName("pushButton")
self.label_2 = QtWidgets.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(40, 10, 201, 16))
font = QtGui.QFont()
font.setPointSize(18)
font.setUnderline(True)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(Form)
self.label_3.setGeometry(QtCore.QRect(80, 30, 121, 16))
font = QtGui.QFont()
font.setPointSize(11)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Парсер для avito.ru"))
self.label.setText(_translate("Form", "Вставьте ссылку на страницу:"))
self.pushButton.setText(_translate("Form", "Начать"))
self.label_2.setText(_translate("Form", "Состояние парсера:"))
self.label_3.setText(_translate("Form", "Не активен"))
Ответы (1 шт):
Решения очень зависимым от платформы и стиля.
Чтобы узнать, какие стили установлены в системе, просто вызовите QStyleFactory.keys().
print(QtWidgets.QStyleFactory.keys())
Обратите внимание, что не все стили доступны для каждой системы.
Обычно доступны Fusion и Windows что означает,
что если вы попытаетесь получить доступ к стилю Oxygen, а он не установлен,
вместо него будет использован запасной стиль.
То что вы предоставили, у меня выглядит по другому:
Попробуйте установить Fusion
...
def main():
app = QApplication(sys.argv)
print(QtWidgets.QStyleFactory.keys())
app.setStyle('Fusion') # +++ Fusion
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
...
вот что уменя получается:
я согласен с комментарием @AlexanderChernin, старайтесь свегда использовать QLayoutы.
я отметил ту кнопочку, о которой говорится в комментарии.
Или нажмите на свободном месте правой кнопкой мышки и 1, 2, 3
и на конец ваш .ui может выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>367</width>
<height>362</height>
</rect>
</property>
<property name="windowTitle">
<string>Парсер для avito.ru</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="4" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="1">
<widget class="QPushButton" name="pushButton">
<property name="font">
<font>
<pointsize>14</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Начать</string>
</property>
</widget>
</item>
<item row="4" column="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0" colspan="3">
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<pointsize>18</pointsize>
<underline>true</underline>
</font>
</property>
<property name="text">
<string>Состояние парсера:</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<widget class="QLabel" name="label_3">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>Не активен</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="3">
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>16</pointsize>
</font>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="text">
<string>Вставьте ссылку на страницу:</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
</widget>
</item>
<item row="3" column="0" colspan="3">
<widget class="QLineEdit" name="lineEdit"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>




