【发布时间】:2019-08-23 14:05:36
【问题描述】:
我有一个PySide2 GUI 应用程序,它带有一个QPushButton 按钮和一个连接到它的@Slot 函数。如何与函数共享数据?
from PySide2.QtCore import Slot
from PySide2.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton, QVBoxLayout
@Slot()
def button_XYZ_callback():
# Function which is executed when the button XYZ is clicked.
# I'd like to access the __main__s context data "parent_data" here.
pass
if __name__ == '__main__':
# parent context data what I want to access (read only)
parent_data = "blub"
application = QApplication(sys.argv)
window = QMainWindow()
central_widget = QWidget()
xyz_button = QPushButton("XYZ", central_widget)
xyz_button.clicked.connect(button_xyz_callback)
layout = QVBoxLayout(central_widget)
layout.addWidget(xyz_button)
window.show()
sys.exit(application.exec_())
【问题讨论】:
-
你能发一个minimal example你想要达到的目标吗?
-
根据 Python 的 LEGB rule,可以从
button_XYZ_callback函数中访问全局变量parent_data。 -
@unutbu 我知道,但全局变量通常被认为是糟糕的设计。我想知道这是否是我还不知道的其他 pyside 特定机制。
标签: python-3.x user-interface pyside2