在Python交互模式下使用Pyside是否安全?

时间:2014-06-26 23:31:46

标签: python qt pyqt pyside

当我使用PySide时,我总是使用Python交互模式。这样安全吗?我想知道PySide如何在Python交互模式下运行。使用PySide时Python interactive modeRunning from shell calling "python sample.py"之间有什么区别。

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

1 个答案:

答案 0 :(得分:2)

安全是什么意思?如果您指的是数据的安全性,那么管理它并不比运行的代码更安全或更危险,以及用户与程序交互的方式比正常运行更安全或更危险,除了交互式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,但这是您必须阅读的其他内容。