当前位置: 首页>>代码示例>>Python>>正文


Python QWidget.setContextMenuPolicy方法代码示例

本文整理汇总了Python中PyQt5.QtWidgets.QWidget.setContextMenuPolicy方法的典型用法代码示例。如果您正苦于以下问题:Python QWidget.setContextMenuPolicy方法的具体用法?Python QWidget.setContextMenuPolicy怎么用?Python QWidget.setContextMenuPolicy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PyQt5.QtWidgets.QWidget的用法示例。


在下文中一共展示了QWidget.setContextMenuPolicy方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: StartExternalScript

# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import setContextMenuPolicy [as 别名]
class StartExternalScript(vip_base):


    def cb_initialize_plugin(self):

        # --------------------------------
        # Create Widget
        # --------------------------------
        # Create Widget needed for this plugin
        self.config = self.pl_get_current_config_ref()
        self.SESWidget = QWidget()
        self.pl_set_widget_for_internal_usage( self.SESWidget )


        hbox = QHBoxLayout()
        self.SESWidget.setLayout(hbox)


        self.status_label = QLabel()
        self.status_label.setText('offline...')

        hbox.addWidget(self.status_label)

        self.control_button = QPushButton('Start External Script')
        self.control_button.clicked.connect(self.button_click_callback)

        hbox.addWidget(self.control_button)

        self.SESWidget.setContextMenuPolicy(Qt.CustomContextMenu)
        self.SESWidget.customContextMenuRequested.connect(self.show_context_menu)


        # ---------------------------
        # Create Legend
        # ---------------------------
        self.external_state = 'offline'

        self.path = self.config['path']['value']
        file = os.path.basename(self.path)
        self.dir = self.path[:-len(file)]

        return True

    def show_context_menu(self, pos):
        gloPos = self.SESWidget.mapToGlobal(pos)
        self.cmenu = self.pl_create_control_context_menu()
        self.cmenu.exec_(gloPos)

    def button_click_callback(self):
        if self.external_state == 'offline':
            self.external_state = 'online'
            self.control_button.setText('Stop External Script')
            self.status_label.setText('running...')
            self.process = subprocess.Popen(self.path, cwd=self.dir,
                    stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=False, preexec_fn=os.setsid)
        else:
            self.external_state = 'offline'
            self.control_button.setText('Start External Script')
            self.status_label.setText('offline...')
            os.killpg(self.process.pid, SIGTERM)

    def cb_pause(self):
        # will be called, when plugin gets paused
        # can be used to get plugin in a defined state before pause
        # e.a. close communication ports, files etc.
        pass

    def cb_resume(self):
        # will be called when plugin gets resumed
        # can be used to wake up the plugin from defined pause state
        # e.a. reopen communication ports, files etc.
        pass

    def cb_execute(self, Data=None, block_name = None, plugin_uname = None):
        # Do main work here!
        # If this plugin is an IOP plugin, then there will be no Data parameter because it wont get data
        # If this plugin is a DPP, then it will get Data with data

        # param: Data is a Data hash and block_name is the block_name of Data origin
        # Data is a hash, so use ist like:  Data[CORE_TIME_SIGNAL] = [t1, t2, ...] where CORE_TIME_SIGNAL is a signal_name
        # hash signal_name: value

        # Data could have multiple types stored in it e.a. Data['d1'] = int, Data['d2'] = []

        pass

    def cb_set_parameter(self, name, value):
        # attetion: value is a string and need to be processed !
        # if name == 'irgendeinParameter':
        #   do that .... with value
        pass

    def cb_quit(self):
        # do something before plugin will close, e.a. close connections ...
        if self.external_state == 'online':
            os.killpg(self.process.pid, SIGTERM)
            print('External script was running while plugin was closed! Script was killed.')


    def cb_get_plugin_configuration(self):
#.........这里部分代码省略.........
开发者ID:TUB-Control,项目名称:PaPI,代码行数:103,代码来源:StartExternalScript.py

示例2: PaPIController

# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import setContextMenuPolicy [as 别名]
class PaPIController(vip_base):

    def cb_initialize_plugin(self):
        # ---------------------------
        # Read configuration
        # ---------------------------
        self.config = self.pl_get_current_config_ref()
        self.udp_plugin_uname = self.config['UDP_Plugin_uname']['value']
        # --------------------------------
        # Create Widget
        # --------------------------------
        # Create Widget needed for this plugin

        self.ControllerWidget = QWidget()
        self.pl_set_widget_for_internal_usage( self.ControllerWidget )
        hbox = QHBoxLayout()
        self.ControllerWidget.setLayout(hbox)
        self.status_label = QLabel()
        self.status_label.setText('Controlling...')
        hbox.addWidget(self.status_label)

        self.lock = threading.Lock()
        self.plugin_started_list = []
        self.event_list = []
        self.thread_alive = False

        self.ControllerWidget.setContextMenuPolicy(Qt.CustomContextMenu)
        self.ControllerWidget.customContextMenuRequested.connect(self.show_context_menu)

        self.start_UDP_plugin()
        return True

    def show_context_menu(self, pos):
        gloPos = self.ControllerWidget.mapToGlobal(pos)
        self.cmenu = self.pl_create_control_context_menu()
        self.cmenu.exec_(gloPos)

    def cb_pause(self):
        # will be called, when plugin gets paused
        # can be used to get plugin in a defined state before pause
        # e.a. close communication ports, files etc.
        pass

    def cb_resume(self):
        # will be called when plugin gets resumed
        # can be used to wake up the plugin from defined pause state
        # e.a. reopen communication ports, files etc.
        pass

    def cb_execute(self, Data=None, block_name = None, plugin_uname = None):
        # Do main work here!
        # If this plugin is an IOP plugin, then there will be no Data parameter because it wont get data
        # If this plugin is a DPP, then it will get Data with data

        # param: Data is a Data hash and block_name is the block_name of Data origin
        # Data is a hash, so use ist like:  Data[CORE_TIME_SIGNAL] = [t1, t2, ...] where CORE_TIME_SIGNAL is a signal_name
        # hash signal_name: value

        # Data could have multiple types stored in it e.a. Data['d1'] = int, Data['d2'] = []
        self.thread1 = threading.Thread(target=self.execute_cfg)

        self.event_list.append(Data)
        if self.thread_alive is False:
            self.thread1.start()



    def execute_cfg(self):
        while len(self.event_list) > 0:
            Data = self.event_list.pop(0)
            ############################
            #      Reset Signal        #
            ############################
            if 'ControlSignalReset' in Data:
                val = Data['ControlSignalReset']
                if val == 1:
                   while len(self.plugin_started_list):
                        pl_uname = self.plugin_started_list.pop()
                        self.control_api.do_delete_plugin_uname(pl_uname)
                time.sleep(0.5)

            ############################
            #       Create Plugins     #
            ############################
            if 'ControlSignalCreate' in Data:
                cfg = Data['ControlSignalCreate']
                if cfg is not None:
                    for pl_uname in cfg:
                        if pl_uname not in self.plugin_started_list:
                            pl_cfg = cfg[pl_uname]
                            self.control_api.do_create_plugin(pl_cfg['identifier']['value'],pl_uname, pl_cfg['config'])
                            self.plugin_started_list.append(pl_uname)


            ############################
            #       Create Subs        #
            ############################
            if 'ControlSignalSub' in Data:
                cfg = Data['ControlSignalSub']
                if cfg is not None:
#.........这里部分代码省略.........
开发者ID:dani-l,项目名称:PaPI,代码行数:103,代码来源:PaPIController.py

示例3: Radiobutton

# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import setContextMenuPolicy [as 别名]
class Radiobutton(vip_base):
    def cb_initialize_plugin(self):

        self.event_choice = DEvent("Choice")

        self.pl_send_new_event_list([self.event_choice])

        self.config = self.pl_get_current_config_ref()
        para_list = []

        self.para_texts = DParameter("texts", default=self.config["option_texts"]["value"])
        self.para_values = DParameter("values", default=self.config["option_values"]["value"])

        para_list.append(self.para_texts)
        para_list.append(self.para_values)

        self.pl_send_new_parameter_list(para_list)

        self.central_widget = QWidget()

        self.option_texts = []
        self.option_values = []
        self.pre_selected_index = None

        if isinstance(self.config["selected_index"]["value"], str):
            if self.config["selected_index"]["value"] != "":
                self.pre_selected_index = int(self.config["selected_index"]["value"])

        self.pl_set_widget_for_internal_usage(self.central_widget)
        self.layout = QVBoxLayout(self.central_widget)

        self.buttons = []

        self.set_option_texts(self.config["option_texts"]["value"])
        self.set_option_values(self.config["option_values"]["value"])

        self.update_widget()

        return True

    def set_option_values(self, values):

        if isinstance(values, str):
            self.option_values = str.split(values, ",")

            for i in range(len(self.option_values)):
                self.option_values[i] = self.option_values[i].lstrip().rstrip()

    def set_option_texts(self, texts):

        if isinstance(texts, str):
            self.option_texts = str.split(texts, ",")

            for i in range(len(self.option_texts)):
                self.option_texts[i] = self.option_texts[i].lstrip().rstrip()

    def update_widget(self):

        for button in self.buttons:
            self.layout.removeWidget(button)
            button.deleteLater()

        self.buttons = []

        for i in range(len(self.option_texts)):
            button = QRadioButton(self.option_texts[i])

            button.released.connect(self.button_released)

            if i == self.pre_selected_index:
                button.setChecked(True)

            self.buttons.append(button)
            self.layout.addWidget(button)

        self.central_widget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.central_widget.customContextMenuRequested.connect(self.show_context_menu)

        return self.central_widget

    def show_context_menu(self, pos):
        gloPos = self.central_widget.mapToGlobal(pos)
        self.cmenu = self.pl_create_control_context_menu()
        self.cmenu.exec_(gloPos)

    def button_released(self):
        for i in range(len(self.buttons)):
            if self.buttons[i].isChecked():
                self.config["selected_index"]["value"] = str(i)
                if len(self.option_values) == len(self.option_texts):
                    self.pl_emit_event(self.option_values[i], self.event_choice)
                else:
                    self.pl_emit_event(self.option_texts[i], self.event_choice)

    def cb_set_parameter(self, parameter_name, parameter_value):

        if parameter_name == self.para_texts.name:
            self.config["option_texts"]["value"] = parameter_value
            self.set_option_texts(parameter_value)
            self.update_widget()
#.........这里部分代码省略.........
开发者ID:dani-l,项目名称:PaPI,代码行数:103,代码来源:Radiobutton.py

示例4: Radiobutton

# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import setContextMenuPolicy [as 别名]
class Radiobutton(vip_base):
    def cb_initialize_plugin(self):

        self.event_choice = DEvent('Choice')

        self.pl_send_new_event_list([self.event_choice])

        self.config = self.pl_get_current_config_ref()
        para_list = []

        self.para_texts    = DParameter('texts', default=self.config['option_texts']['value'])
        self.para_values   = DParameter('values', default=self.config['option_values']['value'])

        para_list.append(self.para_texts)
        para_list.append(self.para_values)

        self.pl_send_new_parameter_list(para_list)

        self.central_widget = QWidget()

        self.option_texts = []
        self.option_values = []
        self.pre_selected_index = None

        if isinstance(self.config['selected_index']['value'], str):
            if self.config['selected_index']['value'] != '':
                self.pre_selected_index = int(self.config['selected_index']['value'])

        self.pl_set_widget_for_internal_usage(self.central_widget)
        self.layout = QVBoxLayout(self.central_widget)

        self.buttons = []

        self.set_option_texts(self.config['option_texts']['value'])
        self.set_option_values(self.config['option_values']['value'])

        self.update_widget()

        return True

    def set_option_values(self, values):

        if isinstance(values, str):
            self.option_values = str.split(values, ',')

            for i in range(len(self.option_values)):
                self.option_values[i] = self.option_values[i].lstrip().rstrip()

    def set_option_texts(self, texts):

        if isinstance(texts, str):
            self.option_texts = str.split(texts, ',')

            for i in range(len(self.option_texts)):
                self.option_texts[i] = self.option_texts[i].lstrip().rstrip()

    def update_widget(self):

        for button in self.buttons:
            self.layout.removeWidget(button)
            button.deleteLater()

        self.buttons = []

        for i in range(len(self.option_texts)):
            button = QRadioButton(self.option_texts[i])

            button.released.connect(self.button_released)

            if i == self.pre_selected_index:
                button.setChecked(True)

            self.buttons.append(button)
            self.layout.addWidget(button)

        self.central_widget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.central_widget.customContextMenuRequested.connect(self.show_context_menu)

        return self.central_widget

    def show_context_menu(self, pos):
        gloPos = self.central_widget.mapToGlobal(pos)
        self.cmenu = self.pl_create_control_context_menu()
        self.cmenu.exec_(gloPos)

    def button_released(self):
        for i in range(len(self.buttons)):
            if self.buttons[i].isChecked():
                self.config['selected_index']['value'] = str(i)
                if len(self.option_values) == len(self.option_texts):
                    self.pl_emit_event(self.option_values[i], self.event_choice)
                else:
                    self.pl_emit_event(self.option_texts[i], self.event_choice)

    def cb_set_parameter(self, parameter_name, parameter_value):


        if parameter_name == self.para_texts.name:
            self.config['option_texts']['value'] = parameter_value
            self.set_option_texts(parameter_value)
#.........这里部分代码省略.........
开发者ID:TUB-Control,项目名称:PaPI,代码行数:103,代码来源:Radiobutton.py


注:本文中的PyQt5.QtWidgets.QWidget.setContextMenuPolicy方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。