Как положить QLineEdit в QFrame на PyQt5?
Подскажите пожалуйста, как положить в мою рамку QFrame два QLineEdit, чтобы ввод был именно в этой темной рамке.
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QLabel, QLineEdit, QFrame, QVBoxLayout
from PyQt5.Qt import *
import sys
class WindowInputName(QtWidgets.QWidget):
def __init__(self):
super(WindowInputName, self).__init__()
self.setUpui()
self.setForm()
def setUpui(self):
self.resize(320, 320)
self.setWindowTitle("Программа")
self.setStyleSheet('background-color: #3f5664;')
self.fram = QFrame()
self.fram.setFixedSize(300, 300)
self.fram.setStyleSheet('''QFrame {
background-color: #2b3942;
border-radius: 30px;
}''')
shadow = QGraphicsDropShadowEffect(blurRadius=70, xOffset=-10, yOffset=10, color=QColor('#97abb5'))
self.fram.setGraphicsEffect(shadow)
self.user_input = QLineEdit()
self.user_input_2 = QLineEdit()
def setForm(self):
hbox = QtWidgets.QHBoxLayout(self)
hbox.addWidget(self.fram)
self.setLayout(hbox)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
win = WindowInputName()
win.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Класс QFormLayout управляет формами виджетов ввода и связанными с ними метками. Больше https://doc.qt.io/qt-5/qformlayout.html
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QLabel, QLineEdit, QFrame, QVBoxLayout
from PyQt5.Qt import *
import sys
class WindowInputName(QtWidgets.QWidget):
def __init__(self):
super(WindowInputName, self).__init__()
self.setUpui()
self.setForm()
def setUpui(self):
self.resize(320, 320)
self.setWindowTitle("Программа")
self.setStyleSheet('background-color: #3f5664;')
self.fram = QFrame()
self.fram.setFixedSize(300, 300)
self.fram.setStyleSheet('''QFrame {
background-color: #2b3942;
border-radius: 30px;
}''')
shadow = QGraphicsDropShadowEffect(blurRadius=70, xOffset=-10, yOffset=10, color=QColor('#97abb5'))
self.fram.setGraphicsEffect(shadow)
self.user_input = QLineEdit()
self.user_input_2 = QLineEdit()
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# попробуйте так
# vbox = QtWidgets.QVBoxLayout(self.fram)
# vbox.addWidget(self.user_input)
# vbox.addWidget(self.user_input_2)
form_layout = QtWidgets.QFormLayout(self.fram)
form_layout.addRow(
QLabel('<h2 style="color: #A05344;">User input:<h3>'),
self.user_input
)
form_layout.addRow('User input2 :', self.user_input_2)
form_layout.setFormAlignment(QtCore.Qt.AlignCenter)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
def setForm(self):
hbox = QtWidgets.QHBoxLayout(self)
hbox.addWidget(self.fram)
self.setLayout(hbox)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
win = WindowInputName()
win.show()
sys.exit(app.exec_())
