Замена щелчка левой кнопкой мыши правой кнопкой мыши в PySimpleGUI / Tkinter - PullRequest
0 голосов
/ 02 ноября 2019

Python newbie здесь - я не очень понимаю, как работают создание классов и init , может быть, это прояснит мне.

Мне интересно, можно ли адаптироватьэтот код отсюда: Заставить ползунок TkInter Scale привязать мышь и использовать его с PySimpleGUI. Я знаю, что PySimpleGUI использует tkinter, этот код адаптирует модуль масштабирования tkinter для переназначения щелчка правой кнопкой мыши левой кнопкой мыши:


    import tkinter as tk
    from tkinter import ttk

    class Scale(ttk.Scale):
        """a type of Scale where the left click is hijacked to work like a right 
        click"""
        def __init__(self, master=None, **kwargs):
            ttk.Scale.__init__(self, master, **kwargs)
            self.bind('<Button-1>', self.set_value)

        def set_value(self, event):
            self.event_generate('<Button-3>', x=event.x, y=event.y)
            return 'break'

        def show_values():
            print('w1 set to',w1.get())
    ##### etc... #####
        w1 = Scale(f1, to=7, orient=tk.VERTICAL)
        w1.grid(row = 1, column = 1, rowspan = 8, pady=5, padx=2, sticky='nsew')

Минимальный PySimpleGUI с ползунком:

    import PySimpleGUI as sg

    # Window layout
    layout = [[sg.Slider(range=(1,100),
             resolution=10,
             default_value=100,
             size=(9,7),
             orientation='horizontal',
             enable_events=True)]]

    window = sg.Window('Window Title', layout, no_titlebar=True, 
    keep_on_top=True)

    event, values = window.Read(timeout=300)
    ##### etc... #####

Как я могу заставить Слайдер получать щелчок правой кнопкой мыши вместо щелчка левой кнопкой мыши, используя это или другим способом?

...