我正在尝试将自动调整大小规则设置为嵌入urxvt shell终端的QVBoxLayout。这是一个嵌入到较大项目中的窗口小部件。
项目在这里: https://github.com/3fon3fonov/trifon
您可以看到该小部件是静态的,而当“ bash shell”选项卡大小更改时,我想自动更改其大小。
我正在使用的代码是“ terminal.py”(坦率地说,我不记得我从哪里采用了此代码,但肯定来自stackoverflow):
import sys
from PyQt5 import QtCore, QtWidgets
import subprocess
import os
class EmbTerminal(QtWidgets.QWidget):
def __init__(self, parent=None):
super(EmbTerminal, self).__init__(parent)
self.process = QtCore.QProcess(self)
self.terminal = QtWidgets.QWidget(self)
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.terminal)
# Works also with urxvt:
if subprocess.call(["which", 'urxvt'], stdout=open(os.devnull, 'wb')) == 1:
self.process.start('xterm',['-into', str(int(self.winId()))])
else:
self.process.start('urxvt',['-embed', str(int(self.winId()))])
#self.setFixedSize(450, 390)
class mainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(mainWindow, self).__init__(parent)
central_widget = QtWidgets.QWidget()
lay = QtWidgets.QVBoxLayout(central_widget)
self.setCentralWidget(central_widget)
tab_widget = QtWidgets.QTabWidget()
lay.addWidget(tab_widget)
tab_widget.addTab(EmbTerminal(), "EmbTerminal")
tab_widget.addTab(QtWidgets.QTextEdit(), "QTextEdit")
tab_widget.addTab(QtWidgets.QMdiArea(), "QMdiArea")
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
main = mainWindow()
main.show()
sys.exit(app.exec_())
我从中仅调用EmbTerminal(),即
import terminal
...
self.terminal_embeded.addTab(terminal.EmbTerminal(), "Bash shell")
欢迎任何想法!
非常感谢!