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
Attachments (1)
Change History (4)
by , 4 years ago
| Attachment: | cmd line descenders.zip added |
|---|
comment:1 by , 4 years ago
| Cc: | added |
|---|---|
| Component: | Unassigned → Window Toolkit |
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → Windows 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 , 4 years ago
Also, the sub-event-loop theory doesn't explain why this is a Windows-only problem.
comment:3 by , 4 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
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.
Added by email2trac