0
我試圖從QtGui使用對話來獲取用戶的一些輸入。 對於QFileDialog,它可以像我預期的那樣工作,但是當我使用QInputDialog時,會彈出對話框並繼續執行代碼,而無需等待用戶輸入。 下面是一個簡單的例子:如何將QInputDialog設置爲模式
from PyQt4 import QtGui
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from numpy import pi
class Canvas(FigureCanvas):
def __init__(self):
self.fig = Figure()
FigureCanvas.__init__(self, self.fig)
self.fig.canvas.mpl_connect('key_press_event',self.key_pressed)
self.fig.canvas.mpl_connect('button_press_event',self.on_left_click)
self.ax = self.fig.add_axes([0,0,1,1])
self.figure.canvas.show()
def key_pressed(self, event):
if event.key == 'f':
fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file',
'c:\\',"Image files (*.png *.jpg *.gif)")
print fname
def on_left_click(self,event):
# If the mouse pointer is not on the canvas, ignore buttons
if not event.inaxes: return
if event.button==1:
x=event.xdata
y=event.ydata
r, ok = QtGui.QInputDialog.getDouble(self, 'Text Input Dialog', 'Enter radius:', 10)
if ok:
self.ax.scatter(x, y, s=pi*r**2,c=0.5)
self.draw()
cnv = Canvas()
現在有用,謝謝。 (我在Spyder內部開始它的開放。) – Tomas