Opened 4 years ago

Closed 4 years ago

#6413 closed defect (fixed)

Windows Qt6 editable combobox font problematic

Reported by: Tony Schaefer Owned by: Eric Pettersen
Priority: normal Milestone:
Component: Window Toolkit Version:
Keywords: Cc: chimera-programmers
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Windows-10-10.0.19044
ChimeraX Version: 1.4.dev202203180014 (2022-03-18 00:14:36 UTC)
Description
Command line problem with Qt6 on Windows 10 - the font is different than Qt5, so descenders get cut off on the command line. This is particularly noticable with the letter g. Qt6 is using the Win10 default (Segoe UI), whereas Qt5 used Tahoma (MS Shell Dlg 2). Segoe UI has longer descenders. I've attached an image showing some text on the command line in both Qt5 and Qt6. 

Adjusting the size of the command line does fix this, but I think the default size ought to look good. There are some stackoverflow posts looking for solutions to a similar issue with CSS. Perhaps some of those solutions will work in "QSS". However, QSS can suck to work with as it sometimes changes a lot of things. Going back to the old font would also probably work, but maybe Microsoft changed to Segoe UI for a good reason. I have a script that changes the font size of the command line (makes it easier to show commands to other people). Running it to set the font size to 9 (appears to be the default size) fixes the issue for me. I'll include it here in case it helps:

```
from chimerax.cmd_line.tool import CommandLine

from Qt.QtGui import QFont, QFontMetrics

# change to control the size
new_size = 9

# get the command line tool object
cmd_line = CommandLine.get_singleton(session)

# make a copy of the command line's current font, but with
# larger/smaller text
new_font = QFont(cmd_line.tool_window.ui_area.font())
new_font.setPointSize(new_size)
cmd_line.tool_window.ui_area.setFont(new_font)

# need to adjust the size of the text box to be appropriate
# for the larger/smaller font
metrics = QFontMetrics(new_font)
min_height = int(1.25 * metrics.boundingRect("Qy").height() + 5)
cmd_line.text.setMinimumHeight(min_height)
```

OpenGL version: 3.3.0 NVIDIA 497.29
OpenGL renderer: NVIDIA GeForce RTX 2070/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Locale: en_US.cp1252
Qt version: PyQt6 6.2.3, Qt 6.2.3
Qt platform: windows

Manufacturer: To Be Filled By O.E.M.
Model: To Be Filled By O.E.M.
OS: Microsoft Windows 10 Home (Build 19044)
Memory: 17,107,529,728
MaxProcessMemory: 137,438,953,344
CPU: 16 AMD Ryzen 7 2700X Eight-Core Processor         
OSLanguage: en-US

Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    Babel: 2.9.1
    backcall: 0.2.0
    blockdiag: 3.0.0
    certifi: 2021.10.8
    cftime: 1.6.0
    charset-normalizer: 2.0.12
    ChimeraX-AddCharge: 1.2.3
    ChimeraX-AddH: 2.1.11
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2.1
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.3
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.0.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.36.2
    ChimeraX-AtomicLibrary: 6.1.1
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.1
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.0
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.6.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.2
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.2.2
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.1
    ChimeraX-CommandLine: 1.2.2
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.4.dev202203180014
    ChimeraX-CoreFormats: 1.1
    ChimeraX-coulombic: 1.3.2
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.2.2
    ChimeraX-Dicom: 1.0
    ChimeraX-DistMonitor: 1.1.5
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0
    ChimeraX-FunctionKey: 1.0
    ChimeraX-Geometry: 1.1
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.1
    ChimeraX-Hbonds: 2.1.2
    ChimeraX-Help: 1.2
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ItemsInspection: 1.0
    ChimeraX-Label: 1.1
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.5
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.1
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 2.0.6
    ChimeraX-MDcrds: 2.6
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.7
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.5.5
    ChimeraX-ModelPanel: 1.3.2
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.1
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0.2
    ChimeraX-OpenCommand: 1.8
    ChimeraX-PDB: 2.6.6
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.2
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1
    ChimeraX-PubChem: 2.1
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0.1
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.4.9
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.1
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.8
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.0.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.1.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-TestManager: 0.3
    ChimeraX-themes: 0.3.1
    ChimeraX-Toolbar: 1.1
    ChimeraX-ToolshedUtils: 1.2.1
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.16.3
    ChimeraX-uniprot: 2.2
    ChimeraX-UnitCell: 1.0
    ChimeraX-ViewDockX: 1.1.2
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0
    ChimeraX-WebServices: 1.0
    ChimeraX-Zone: 1.0
    colorama: 0.4.4
    comtypes: 1.1.10
    cxservices: 1.1
    cycler: 0.11.0
    Cython: 0.29.26
    debugpy: 1.5.1
    decorator: 5.1.1
    dill: 0.3.4
    docutils: 0.17.1
    entrypoints: 0.4
    filelock: 3.4.2
    flake8: 4.0.1
    fonttools: 4.30.0
    funcparserlib: 1.0.0a0
    grako: 3.16.5
    h5py: 3.6.0
    html2text: 2020.1.16
    idna: 3.3
    ihm: 0.27
    imagecodecs: 2021.11.20
    imagesize: 1.3.0
    ipykernel: 6.6.1
    ipython: 7.31.1
    ipython-genutils: 0.2.0
    jedi: 0.18.1
    Jinja2: 3.0.3
    joblib: 1.1.0
    jupyter-client: 7.1.0
    jupyter-core: 4.9.2
    kiwisolver: 1.4.0
    line-profiler: 3.4.0
    lxml: 4.7.1
    lz4: 3.1.10
    MarkupSafe: 2.1.1
    matplotlib: 3.5.1
    matplotlib-inline: 0.1.3
    mccabe: 0.6.1
    msgpack: 1.0.3
    multiprocess: 0.70.12.2
    mypy: 0.941
    mypy-extensions: 0.4.3
    nest-asyncio: 1.5.4
    netCDF4: 1.5.8
    networkx: 2.6.3
    numexpr: 2.8.1
    numpy: 1.22.1
    openvr: 1.16.802
    packaging: 21.3
    ParmEd: 3.4.3
    parso: 0.8.3
    pathos: 0.2.8
    pdb-objects: 0.1.3
    pickleshare: 0.7.5
    Pillow: 9.0.1
    pip: 21.3.1
    pkginfo: 1.8.2
    pox: 0.3.0
    ppft: 1.6.6.4
    prompt-toolkit: 3.0.28
    psutil: 5.9.0
    pycodestyle: 2.8.0
    pycollada: 0.7.2
    pydicom: 2.2.2
    pydocstyle: 6.1.1
    pyflakes: 2.4.0
    Pygments: 2.11.2
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 3.0.7
    PyQt6-commercial: 6.2.3
    PyQt6-sip: 13.2.0
    PyQt6-WebEngine-commercial: 6.2.1
    python-dateutil: 2.8.2
    pytz: 2021.3
    pywin32: 303
    pyzmq: 22.3.0
    qtconsole: 5.2.2
    QtPy: 2.0.1
    RandomWords: 0.3.0
    requests: 2.27.1
    scikit-learn: 1.0.2
    scipy: 1.7.3
    Send2Trash: 1.8.0
    SEQCROW: 1.4a2
    setuptools: 59.8.0
    sfftk-rw: 0.7.1
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    Sphinx: 4.3.2
    sphinx-autodoc-typehints: 1.15.2
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 2.0.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.5
    suds-community: 1.0.0
    tables: 3.7.0
    threadpoolctl: 3.1.0
    tifffile: 2021.11.2
    tinyarray: 1.2.4
    tomli: 2.0.1
    tornado: 6.1
    traitlets: 5.1.1
    typing-extensions: 4.1.1
    urllib3: 1.26.9
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.37.1
    wheel-filename: 1.3.0
    WMI: 1.5.1
File attachment: cmd line descenders.zip

cmd line descenders.zip

Attachments (1)

cmd line descenders.zip (4.1 KB ) - added by Tony Schaefer 4 years ago.
Added by email2trac

Download all attachments as: .zip

Change History (4)

by Tony Schaefer, 4 years ago

Attachment: cmd line descenders.zip added

Added by email2trac

comment:1 by Eric Pettersen, 4 years ago

Cc: chimera-programmers added
Component: UnassignedWindow Toolkit
Owner: set to Eric Pettersen
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionWindows Qt6 editable combobox font problematic

This problem seems to be restricted to editable comboboxes on Windows for Qt6. Descenders are fine on Mac, or in LineEdit widgets on Windows.

Seems to be specific to the command line (which is why I assigned it to myself to start). If I use some monkey business to force the combo boxes used by the Updates tool to be editable, characters with descenders (e.g. "g") are depicted without issue.

comment:2 by Eric Pettersen, 4 years ago

Also, the sub-event-loop theory doesn't explain why this is a Windows-only problem.

comment:3 by Eric Pettersen, 4 years ago

Resolution: fixed
Status: assignedclosed

Previous comment wasn't intended for this ticket.

Anyway, have committed a work around. On Qt6 Windows, the line edit starts one pixel too narrow. As you noted, interactively adjusting the height allocated to the command line fixes the problem, since the line edit grows the needed one pixel. I will get around to submitting a bug report to Qt someday.

Note: See TracTickets for help on using tickets.