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