PySimpleGUI / PySimpleGUI

Python GUIs for Humans! PySimpleGUI is the top-rated Python application development environment. Launched in 2018 and actively developed, maintained, and supported in 2024. Transforms tkinter, Qt, WxPython, and Remi into a simple, intuitive, and fun experience for both hobbyists and expert users.
https://www.PySimpleGUI.com
Other
13.42k stars 1.83k forks source link

[ Enhancement/Question] Tab Element Vertical/Rotated Text/Images #2713

Open jacquesne opened 4 years ago

jacquesne commented 4 years ago

Type of Issues (Enhancement, Question)

I currently have left-aligned tab group and am trying to create rotated text but can't find any way to do it without abandoning tab groups entirely (not optimal from an implementation standpoint).

Operating System

Windows 10

Python version

3.8.0

PySimpleGUI Port and Version

C:\Users\hunte\PycharmProjects\Storage-Manager\venv\lib\site-packages\PySimpleGUI\__init__.py

4.16.0 Released 20 Feb 2020

Your Experience Levels In Months or Years

_1.5 years_ Python programming experience _5 years_ Programming experience overall _No_ Have used another Python GUI Framework (tkiner, Qt, etc) previously (yes/no is fine)?

You have completed these steps:

Description of Problem / Question / Details

My current goal is interface related: I want to be able to rotate text for my UI on tabs (although it would be nice in general). Here is a markup in Pencil of my intent: operations

Here is my current implementation (using newlines to make fake vertical text): 2020-03-23

Ideally this could be as simple as adding a rotation value to text (or maybe a rotated font?). If not the ability to apply images to tabs and fake it by applying rotated text images. But after searching the documentation and existing issues I can't find anyone else with this issue or a solution.

Code To Duplicate

There really isn't code, per se, although what I'm using now for the text is:

@staticmethod
def make_vertical(title):
        new_title = ""
        for letter in title:
            new_title += f"{letter}\n"
        return new_title

Thank you for your assistance.

PySimpleGUI commented 4 years ago

Wow you're really thinking out the box!

It should be doable in all of the ports I would think. Will check on it.

PySimpleGUI commented 4 years ago

The only technique I've found for doing this with tkinter is to use images on the tabs. Unfortunately PySimpleGUI doesn't yet support having images on the tabs. I figured out how to put images into Tabs in tkinter: image

But I can't figure out how to do it in user code utilizing the .Widget member variable.

I'm not sure if images on tabs has been opened as an enhancement, but it would be a good one if it's not there. I would have added it while investigating, but it's more involved than a super-quick slip it into the code. An image, in multiple formats, needs to be passed in as a parameter for each tab, etc. I may be able to get to it at some point, just not super soon. It's certainly something that needs adding.