Skip to main content

pycrossword - the Python Crossword Puzzle Generator and Editor

Project description

pycrossword - the Python Crossword Puzzle Generator and Editor

pycrossword is a pure-Python implementation of a crossword puzzle generator and editor.


pycrossword source code and documentation are hosted on Github

The python package is available from PyPi


  • full-fledged Qt 5 based GUI
  • cross-platform implementation
  • multilingual interface (currently only English and Russian, more to come)
  • install from Github or PyPi
  • open, save, restore, export, and import crossword puzzles
  • powerful word sources: SQLite database / CSV (plaintext) / raw python list
  • crossword generation (from word sources)
  • supports common puzzle file formats: XPF, IPUZ and raw text grid
  • easily load, edit and save word clues
  • flexible GUI settings: colors, grid settings, clues table look & feel, etc. (can load and save settings)
  • auto app updating / new release checking from Github
  • lookup word definition in an online dictionary and Google
  • manual editing of individual words and suggestions from word sources
  • comfortable navigation in GUI (hotkeys, keystrokes, mouse)
  • context menus
  • hi-res printing to PDF or printer with customizable page / element layout
  • export crossword to image (jpg, png, tiff) / PDF / SVG with customizable resolution etc.
  • store crosswords in cloud and share them social networks
  • view user-friendly stats on current crossword in chart
  • inbuilt browser
  • comprehensive Doxygen-generated API reference



You must have the following applications / packages installed in your system:

  • Python 3.7+ (the app was written and tested with Python 3.7.4 and 3.8.0)
  • Python packages:
    • PyQt5>=5.14
    • PyQtWebEngine>=5.14
    • QScintilla>=2.11
    • requests
    • numpy
    • pandas
    • altair
  • Git (should be pre-installed on most modern Linux and Mac systems, alternatively install from the git website)

The latter two (packages and Git) are not actually required if you opt for the PyPi (pip) installation variant as described below.

Installation options

Choose one of the two installation options.

1. Clone repo - copy entire source code with version control history

To get the latest (non-stable) version, run:

git clone .

This will checkout to the master branch which tracks all recent changes, some of which may not be yet merged into a release version.

To get the latest stable version, run:

git clone .
git reset --hard latest

This will checkout to the branch pointed at by the latest tag which will always be the latest stable release.

Install the required packages

I recommend (as many do) installing packages into python's virtual environment using virtualenv or the inbuilt venv:

Create a new virtual environment:

Linux / Mac

cd myprojects
virtualenv pycross
cd pycross
. ./bin/activate


cd myprojects
virtualenv pycross
cd pycross

This step is, of course, optional. You can skip it if you don't want to use virtual environments for some reason or other.

Then just run:

cd crossword
python -m pip install -r requirements.txt

If you're using a virtual environment, you can deactivate it after closing the app with deactivate.

2. Install from PyPi

Create your virtual environment as described above (which is again optional). Then use pip to download and install pycrossword (together with the required additional packages):

pip install --upgrade pycrossword


Run on Linux/Mac (remember to do chmod +x first) or pycross.bat on Windows to launch the pycrossword UI app.

Alternativaly, you can register the pycrossword file associations at initial run (go to Settings > Common > Register file associations). After that, you can launch the app by double-clicking crossword files (like *.xpf or *.ipuz) or settings files (*.pxjson)

See docs for detailed usage guide.


See roadmap.txt for future plans!

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pycrossword, version 0.3
Filename, size File type Python version Upload date Hashes
Filename, size pycrossword-0.3-py3-none-any.whl (18.0 MB) File type Wheel Python version py3 Upload date Hashes View
Filename, size pycrossword-0.3.tar.gz (17.4 MB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page