python - 在Python交互模式下使用Pyside安全吗?

标签 python qt pyqt pyside

当我使用PySide时,我总是使用Python交互模式。这安全吗?我想知道 PySide 在 Python 交互模式下如何运作。使用 PySide 时,Python 交互模式从 shell 调用“python example.py”运行有什么区别。

P.S.不要犹豫从语法点修改这个问题,因为我是英语学习者。同样从技术角度来看。

最佳答案

安全是什么意思?如果您指的是它所管理的数据的安全性,那么它并不比正在运行的代码以及用户与程序的交互方式比正常运行程序更安全或更危险,但交互式 shell 可以直接访问整个程序状态。具有 Python 语言的全部功能。然而,由于 Qt 的结构,这不能轻易被利用*,但您仍然可以使用它来生成窗口。

无论如何,这是一个例子:

>>> from PySide import QtCore, QtGui
>>> class MainWindow(QtGui.QMainWindow):
...     def __init__(self):
...         super(MainWindow, self).__init__()
...         self.setObjectName("MainWindow")
...         self.resize(800, 600)
...
>>> app = QtGui.QApplication([])
>>> mw = MainWindow()
>>> exit = QtGui.QAction('&Exit', mw)
>>> exit.triggered.connect(mw.close)
True
>>> menubar = mw.menuBar()
>>> filemenu = menubar.addMenu('&File')
>>> filemenu.addAction(exit)
>>> mw.show()
>>> app.exec_()

交互式 shell 将停止响应,控制权将转移到窗口。单击文件然后退出将关闭窗口,结果如下:

0
>>> 

当然,您可以按顺序重复调用mw.showapp.exec_。如果在调用 app.exec_ 之前窗口被隐藏,您可能无法从 Qt 事件循环中重新获得控制权,因此需要强制退出,这可能是您所说的潜在危险 - 但考虑到我们只是在玩弄它,所以不应该这样做一个问题。我们也可以尝试做点别的事情

>>> def hello():
...     print 'Hello world'
...
>>> helloaction = QtGui.QAction('&Hello', mw)
>>> helloaction.triggered.connect(hello)
True
>>> filemenu.addAction(helloaction)
>>> mw.show()
>>> app.exec_()

您将注意到 Exit 操作下方有一个新操作,选择该操作会将“Hello World”打印到您的终端中。

* 当然,您可以在使用 code.interact 启动应用程序后生成交互式 python shell。在单独的线程中运行,但这是您必须阅读的另一件事。

关于python - 在Python交互模式下使用Pyside安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24441839/

相关文章:

python - PyQt:如何在QGraphicsView中设置滚动条和显示区域大小策略

python - PyQt 按钮选择

python - 在python字符串中做一些详细的解释

python - 杀死Python中的输入

qt - 在Qt中获取物理屏幕尺寸

c++ - 在 qt 中创建 QLabels 的 QVector

python - 无法验证 Twitter

python - OAuth 2.0 服务器到服务器凭据授权失败(Search Console - 网站管理员工具)

qt - QML 对象 var 属性为 null QVariant(QJSValue, ) 来自 cpp

python - 如何在 PyQt 中获取之前激活的小部件?