【发布时间】:2021-09-24 08:34:37
【问题描述】:
我有一个显示数字的主窗口,单击按钮时应该会出现第二个窗口,您可以在其中输入比例因子。在第二个窗口按“确定”时,主窗口中的数字应乘以第二个窗口的比例因子,然后关闭。
这是我用于生成 MainApp 和创建第二个窗口的代码:
from ui_Stackoverflow1 import *
from ui_Stackoverflow2 import *
import sys
class ScaleApp(Ui_ScaleWindow):
def __init__(self, window2):
self.setupUi(window2)
# Todo: see below
class ButtonConnection(Ui_MainWindow):
def __init__(self, window):
self.setupUi(window)
self.pushButton.clicked.connect(self.open_scale_window)
self.important_number = 5
self.lineEdit.setText(str(self.important_number))
def open_scale_window(self):
self.scale_window = QMainWindow()
self.scale_ui = ScaleApp(self.scale_window)
self.scale_window.show()
# TODO
# open new window (ui_Stackoverflow2)
# wait for "ok" being pressed
# take the input of the QSpinBox
# use the input to scale self.important_number by this input
self.lineEdit.setText(str(self.important_number))
if __name__ == "__main__":
app = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = ButtonConnection(MainWindow)
MainWindow.show()
app.exec_()
如何实现数字的缩放?
_______________________________________________________
我使用 Qt-designer 使用以下代码创建了两个 UI:
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'Stackoverlow1tsISdv.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(440, 275)
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.pushButton = QPushButton(self.centralwidget)
self.pushButton.setObjectName(u"pushButton")
self.pushButton.setGeometry(QRect(90, 10, 261, 151))
self.lineEdit = QLineEdit(self.centralwidget)
self.lineEdit.setObjectName(u"lineEdit")
self.lineEdit.setGeometry(QRect(160, 180, 113, 20))
self.lineEdit.setAlignment(Qt.AlignCenter)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QMenuBar(MainWindow)
self.menubar.setObjectName(u"menubar")
self.menubar.setGeometry(QRect(0, 0, 440, 21))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QStatusBar(MainWindow)
self.statusbar.setObjectName(u"statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
self.pushButton.setText(QCoreApplication.translate("MainWindow", u"PushButton", None))
self.lineEdit.setText(QCoreApplication.translate("MainWindow", u"1", None))
# retranslateUi
class Ui_ScaleWindow(object):
def setupUi(self, ScaleWindow):
if not ScaleWindow.objectName():
ScaleWindow.setObjectName(u"ScaleWindow")
ScaleWindow.resize(419, 201)
self.centralwidget = QWidget(ScaleWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.ok_button = QPushButton(self.centralwidget)
self.ok_button.setObjectName(u"ok_button")
self.ok_button.setGeometry(QRect(120, 110, 75, 23))
self.cancel_button = QPushButton(self.centralwidget)
self.cancel_button.setObjectName(u"cancel_button")
self.cancel_button.setGeometry(QRect(210, 110, 75, 23))
self.scaling_box = QDoubleSpinBox(self.centralwidget)
self.scaling_box.setObjectName(u"scaling_box")
self.scaling_box.setGeometry(QRect(170, 50, 62, 22))
ScaleWindow.setCentralWidget(self.centralwidget)
self.menubar = QMenuBar(ScaleWindow)
self.menubar.setObjectName(u"menubar")
self.menubar.setGeometry(QRect(0, 0, 419, 21))
ScaleWindow.setMenuBar(self.menubar)
self.statusbar = QStatusBar(ScaleWindow)
self.statusbar.setObjectName(u"statusbar")
ScaleWindow.setStatusBar(self.statusbar)
self.retranslateUi(ScaleWindow)
QMetaObject.connectSlotsByName(ScaleWindow)
# setupUi
def retranslateUi(self, ScaleWindow):
ScaleWindow.setWindowTitle(QCoreApplication.translate("ScaleWindow", u"Scaling", None))
self.ok_button.setText(QCoreApplication.translate("ScaleWindow", u"OK", None))
self.cancel_button.setText(QCoreApplication.translate("ScaleWindow", u"Cancel", None))
# retranslateUi
【问题讨论】:
标签: python qt-designer pyside2