PyQt4 растянуть LineEdit до ширины окна - PullRequest
2 голосов
/ 06 марта 2019

Я бы хотел растянуть виджет QLineEdit до ширины окна.
Вот код с виджетом, который нужно растянуть с пометкой <--- ЗДЕСЬ </p>

import sys
from PyQt4.Qt import *

# Create the QApplication object
qt_app = QApplication(sys.argv)

class HWApp(QWidget):
    ''' Basic Qt app'''
    def __init__(self):
        # Initialize the object as a QLabel
        QWidget.__init__(self) #, "Hello, world!")

        # Set the size, alignment, and title
        self.setMinimumSize(QSize(800, 600))

        self.setWindowTitle('Hello, world!')
        self.tbox = QLineEdit("simple text",self)#<---HERE
        self.setAlignment(Qt.AlignCenter)

    def run(self):
        ''' Show the app window and start the main event loop '''
        self.show()
        qt_app.exec_()

# Create an instance of the app and run it
HWApp().run()

Что нужно добавить, чтобы растянуть его на всю ширину окна и сохранить его масштабируемым с окном?

Ответы [ 2 ]

2 голосов
/ 06 марта 2019

Используйте макет:

import sys
from PyQt4.Qt import *

# Create the QApplication object
qt_app = QApplication(sys.argv)

class HWApp(QWidget):
    ''' Basic Qt app'''
    def __init__(self):
        # Initialize the object as a QLabel
        QWidget.__init__(self) #, "Hello, world!")

        # Set the size, alignment, and title
        self.setMinimumSize(QSize(800, 600))

        self.setWindowTitle('Hello, world!')
        self.tbox = QLineEdit("simple text", alignment=Qt.AlignCenter) # <---HERE
        lay = QVBoxLayout(self)
        lay.addWidget(self.tbox)
        lay.addStretch()

    def run(self):
        ''' Show the app window and start the main event loop '''
        self.show()
        qt_app.exec_()

# Create an instance of the app and run it
HWApp().run()

enter image description here

Если вы хотите исключить пространство по бокам, необходимо только установить эти поляк нулю (хотя я предпочитаю предпочитать это с полями, так как это более эстетично):

lay.setContentsMargins(0, 0, 0, 0)

enter image description here

2 голосов
/ 06 марта 2019

void QWidget :: resizeEvent (событие QResizeEvent *)

Этот обработчик события может быть переопределён в подклассе для получения событий изменения размера виджета, которые передаются в параметре события. Когда вызывается resizeEvent (), виджет уже имеет новую геометрию.

# ...
    self.tbox = QLineEdit("simple text", self)            # <---HERE
    self.tbox.setAlignment(Qt.AlignCenter)                # +++

def resizeEvent(self, event):                             # +++
    self.tbox.resize(self.width(), 30)
# ...

enter image description here

...