GTK, Glade и Python соединяющие обработчики для некоторых вариантов щелчка правой кнопкой мыши - PullRequest
0 голосов
/ 31 марта 2020

Я надеюсь, что все в безопасности.

Я надеюсь, что кто-то может мне помочь, так как я не могу понять, как я могу получить меню правой кнопки мыши, чтобы показать on_click сигнал в терминале.

Я только новичок с языком кодирования, поэтому я буду признателен за любую помощь. Заранее спасибо.

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
  <requires lib="gtk+" version="3.20"/>
  <object class="GtkMenu" id="menu1">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
  </object>
  <object class="GtkPopoverMenu" id="Remot">
    <property name="can_focus">False</property>
    <property name="no_show_all">True</property>
    <property name="relative_to">menubutton1</property>
    <property name="position">right</property>
    <property name="modal">False</property>
    <property name="transitions_enabled">False</property>
    <property name="constrain_to">none</property>
    <child>
      <object class="GtkBox">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <property name="homogeneous">True</property>
        <property name="baseline_position">bottom</property>
        <child>
          <object class="GtkButton" id="close">
            <property name="label" translatable="yes">close</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <signal name="activate" handler="gtk_main_quit" swapped="no"/>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkButton" id="min">
            <property name="label" translatable="yes">min</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <signal name="activate" handler="gtk_widget_hide" swapped="no"/>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">1</property>
          </packing>
        </child>
        <child>
          <object class="GtkButton" id="u want rice">
            <property name="label" translatable="yes">u want rice</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <signal name="activate" handler="Power_tv_clicked_cb" swapped="no"/>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="pack_type">end</property>
            <property name="position">2</property>
          </packing>
        </child>
      </object>
      <packing>
        <property name="submenu">main</property>
      </packing>
    </child>
  </object>
  <object class="GtkWindow" id="Remote">
    <property name="can_focus">False</property>
    <property name="role">1</property>
    <property name="window_position">mouse</property>
    <property name="destroy_with_parent">True</property>
    <property name="icon_name">address-book-new</property>
    <property name="skip_taskbar_hint">True</property>
    <property name="skip_pager_hint">True</property>
    <property name="urgency_hint">True</property>
    <property name="gravity">west</property>
    <property name="has_resize_grip">True</property>
    <child type="titlebar">
      <placeholder/>
    </child>
    <child>
      <object class="GtkGrid" id="Grid">
        <property name="name">top grid</property>
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <property name="row_homogeneous">True</property>
        <property name="column_homogeneous">True</property>
        <child>
          <object class="GtkButton" id="HDMI_2">
            <property name="label" translatable="yes">HDMI-2</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <signal name="clicked" handler="HDMI_2_clicked_cb" swapped="no"/>
          </object>
          <packing>
            <property name="left_attach">1</property>
            <property name="top_attach">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkButton" id="HDMI_1">
            <property name="label" translatable="yes">HDMI-1</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <signal name="clicked" handler="HDMI_1_clicked_cb" swapped="no"/>
          </object>
          <packing>
            <property name="left_attach">0</property>
            <property name="top_attach">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkButton" id="HDMI_3">
            <property name="label" translatable="yes">HDMI-3</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <signal name="clicked" handler="HDMI_3_clicked_cb" swapped="no"/>
          </object>
          <packing>
            <property name="left_attach">2</property>
            <property name="top_attach">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkMenuButton" id="menubutton1">
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <property name="relief">none</property>
            <property name="popup">menu1</property>
            <property name="popover">Remot</property>
            <child>
              <object class="GtkButton" id="button1">
                <property name="label" translatable="yes">button</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="relief">none</property>
              </object>
            </child>
          </object>
          <packing>
            <property name="left_attach">3</property>
            <property name="top_attach">0</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

Мой python скрипт выглядит немного неопрятный

#!/usr/bin/python
# -*- coding: utf-8 -*-
import subprocess
from gi.repository import Gtk

#class GUI:
##class Remote():
#    def __init__(self):
#        self.builder = Gtk.Builder()
#        self.builder.add_from_file("test.glade")
#        self.builder.connect_signals(self)
#        window = self.builder.get_object("window1")
#        window.show_all()
#        Gtk.window = Gtk.Window(Gtk.WINDOW_TOPLEVEL)
#        #Gtk.Window.__init__(self, title="My Hello World Program")
#        Gtk.Window.set_default_size(self, 4770,325)
#        Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER)
#        Gtk.window.show()
#        Gtk.window.connect("destroy",  self.destroy)

class Handler:
    def HDMI_1_clicked_cb(self, button):
        subprocess.call("'/home/user/Documents/Python works/Hdmi 1.sh'", shell=True)
    def HDMI_2_clicked_cb(self, button):
        subprocess.call("'/home/user/Documents/Python works/Hdmi 2.sh'", shell=True)
    def HDMI_3_clicked_cb(self, button):
        subprocess.call("'/home/user/Documents/Python works/Hdmi 3.sh'", shell=True)
    #def gtk_main_quit(self, button):
    #    print("You clicked exit")
   #     Gtk.main_quit()
    def Power_tv_clicked_cb(self, button):
        subprocess.call("'/home/user/bin/TV-Off.sh'", shell=True)

class Handler1:
    @staticmethod
    def gtk_main_quit(*args):
        Gtk.main_quit()


builder = Gtk.Builder()
builder.add_from_file("Remote.glade")
builder.connect_signals(Handler())
window2 = builder.get_object("Remot")

ournewbutton = builder.get_object("HDMI_1")
ournewbutton = builder.get_object("HDMI_2")
ournewbutton = builder.get_object("HDMI_3")
ournewbutton = builder.get_object("close")
window = builder.get_object("Remote")

window2.connect("delete-event", Gtk.main_quit)
window.set_default_size(100, 20)
#window.set_position(Gtk.WindowPosition.TOP.CENTER)
#window.move (window *window, 500, 500);
window.show_all()
Gtk.main()
...