本文整理汇总了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):
#.........这里部分代码省略.........
示例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:
#.........这里部分代码省略.........
示例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()
#.........这里部分代码省略.........
示例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)
#.........这里部分代码省略.........