Масштабирование встроенных приложений в pyqt5 - PullRequest
0 голосов
/ 30 апреля 2020

Я новичок в pyqt5, поэтому у меня возникли проблемы с изменением размера встроенного терминала urxvt-unicode, который я интегрировал в мое приложение basi c.

Я пытался использовать макеты, но результат net остается тем же, что терминал не будет масштабироваться с основным окном или изменять его размер, если я отрегулирую размер главного окна.

вот мой код

from PyQt5 import QtCore, QtGui, QtWidgets
import os

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        self._process = []
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(502, 356)

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout_3.setContentsMargins(1, 1, 4, 0)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")

        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(30, 20, 451, 281))
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.verticalLayout_5 = QtWidgets.QHBoxLayout(self.frame)
        self.verticalLayout_5.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_5.setSpacing(0)
        self.verticalLayout_5.setObjectName("verticalLayout_5")
        self.start_process('urxvt',['-embed', str(int(self.frame.winId())),"-e","tmux"])
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

    def start_process(self, prog, options):
        process = QtCore.QProcess()
        self._process.append(process)
        process.start(prog, options)
    def run_Command(self, command = "ls"):
        program = "tmux"
        options = []
        options.extend(["send-keys"])
        options.extend([command])
        options.extend(["Enter"])
        self.start_process(program, options)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    app.exec_()
    os.system("pkill -f tmux")
    sys.exit()
...