我正在编写一个 PyQt5 项目,它由几个窗口组成。项目本身已经处于最后阶段,所以我开始添加窗口布局。除了一扇窗户外,所有窗户都一切顺利。我还是 Qt 的新手,所以花了一天时间寻找解决方案后,我放弃了,来到了这里。
我希望窗口缩放并看起来像这样:
但是当我尝试缩放窗口时,它看起来像这样:
出于某种原因,当您尝试拉伸时,窗口QLineEdit
只会在长度上增长。我究竟做错了什么?
这是代码:
class Ui_Append(object):
def setupUi(self, AppendWindow):
AppendWindow.resize(500, 250)
self.centralwidget = QtWidgets.QWidget(AppendWindow)
self.centralwidget.setObjectName("centralwidget")
self.time = QtWidgets.QTimeEdit(self.centralwidget)
self.time.setGeometry(QtCore.QRect(50, 85, 170, 40))
self.time.setObjectName("timeEditWidget")
font = QtGui.QFont('Times new roman', 16)
font.setBold(True)
self.time.setFont(font)
self.time.setMinimumWidth(170)
self.lable_1 = QtWidgets.QLabel(self.centralwidget)
self.lable_1.setGeometry(QtCore.QRect(50, 40, 170, 40))
self.lable_1.setObjectName("lable_1Widget")
font = QtGui.QFont('Times new roman', 16)
font.setBold(True)
self.lable_1.setFont(font)
self.lable_1.setText('Выберите время')
self.lable_1.setMinimumWidth(170)
self.line = QtWidgets.QLineEdit(self.centralwidget)
self.line.setGeometry(QtCore.QRect(280, 85, 170, 40))
self.line.setObjectName("lineEditWidget")
font = QtGui.QFont('Times new roman', 16)
font.setBold(True)
self.line.setFont(font)
self.line.setMinimumWidth(170)
self.lable_2 = QtWidgets.QLabel(self.centralwidget)
self.lable_2.setGeometry(QtCore.QRect(280, 40, 170, 40))
self.lable_2.setObjectName("lable_2Widget")
font = QtGui.QFont('Times new roman', 16)
font.setBold(True)
self.lable_2.setFont(font)
self.lable_2.setText('Введите значение')
self.lable_2.setMinimumWidth(170)
self.push = QtWidgets.QPushButton(self.centralwidget)
self.push.setGeometry(QtCore.QRect(160, 160, 180, 40))
font = QtGui.QFont('Times new roman', 16)
font.setBold(True)
self.push.setFont(font)
self.push.setText('Подтвердить')
self.push.setMinimumWidth(180)
AppendWindow.setCentralWidget(self.centralwidget)
class AppendWindow(QMainWindow, Ui_Append):
def __init__(self, parent=None):
super(AppendWindow, self).__init__(parent)
self.parent = parent
self.setupUi(self)
self.setWindowTitle('Новая запись')
self.push.clicked.connect(self.get_value)
self.grid = QtWidgets.QGridLayout(self.centralwidget)
self.grid.setContentsMargins(20, 20, 20, 20)
self.grid.setHorizontalSpacing(20)
self.grid.setVerticalSpacing(20)
self.grid.setRowStretch(0, 0)
self.grid.setRowStretch(1, 1)
self.grid.addWidget(self.lable_1, 0, 0)
self.grid.addWidget(self.lable_2, 0, 1)
self.grid.addWidget(self.time, 1, 0)
self.grid.addWidget(self.line, 1, 1, 1, 1)
self.grid.addWidget(self.push, 2, 0, 2, 2, alignment=Qt.AlignCenter)
def get_value(self):
value = self.line.text()
time = self.time.text()
try:
con = sqlite3.connect('notes.sqlite')
cur = con.cursor()
name = self.parent.comboBox.currentText()
data = self.parent.label_2.text()
data = data[-10:]
id = cur.execute("""SELECT id FROM users WHERE name = ?""", (name,)).fetchall()
t = cur.execute("""SELECT time FROM note WHERE user = ? AND data = ? AND time = ?""", (id[0][0], data, time)).fetchall()
if len(t) > 0:
raise NewException
if ',' in value and value.count(',') == 1:
m = value.find(',')
value = value[:m] + '.' + value[m + 1:]
value = float(value)
if value <= 0 or value > 55.5:
raise Exception
value = str(value)
self.parent.save(time, value)
self.close()
except NewException:
msgBox = QMessageBox()
msgBox.setIcon(QMessageBox.Information)
msgBox.setWindowTitle("Ошибка")
msgBox.addButton('ок', QMessageBox.AcceptRole)
msgBox.setText("Запись на это время уже существует. Пожалуйста измените время"
"или очистите день и внесите данные снова")
msgBox.exec_()
except Exception:
msgBox = QMessageBox()
msgBox.setIcon(QMessageBox.Information)
msgBox.setWindowTitle("Ошибка")
msgBox.addButton('ок', QMessageBox.AcceptRole)
msgBox.setText("Вы некорректно ввели значение. "
"Значение должно быть десятичным числом меньшим 55.5 "
"и большим 0.0 (Так как значений меньше 0.0 и больше "
"55.5 у живого человека быть не может.). Введите другое значение.")
msgBox.exec_()
1 个回答